ASP.NET 5网站(Razor)

ASP.NET 5网站(Razor),razor,asp.net-core,Razor,Asp.net Core,我正在用VS2015和ASP.NET 5中的WEB API构建一个angular应用程序 在ASP.NET的早期版本中,可以使用CSHTML页面代替HTML页面,而无需构建MVC控制器和路由。例如,如果您创建了ASP.NET网页(Razor)项目 基本上,您可以转到localhost/index.cshtml 假设页面上有@DateTime.Now.ToString()之类的内容,它将返回一个带有日期的白色页面 我希望通过CSHTML而不是HTML静态字段来为我的客户机标记提供服务,因为我想利用

我正在用VS2015和ASP.NET 5中的WEB API构建一个angular应用程序

在ASP.NET的早期版本中,可以使用CSHTML页面代替HTML页面,而无需构建MVC控制器和路由。例如,如果您创建了ASP.NET网页(Razor)项目

基本上,您可以转到localhost/index.cshtml 假设页面上有@DateTime.Now.ToString()之类的内容,它将返回一个带有日期的白色页面

我希望通过CSHTML而不是HTML静态字段来为我的客户机标记提供服务,因为我想利用一些方便的服务器端东西,比如TagHelpers


从ASP.NET 5的Beta8开始,这是否可行?

可以将每个页面转换为字符串。我用这个作为电子邮件模板。 您可以设置自己到通用控制器的路由或创建自己的路由

使用这段代码,您可以生成一个要字符串的视图

 RenderViewToString(@"/Views/Email/ActivateEmail", new ActivateEmail() { Emailaddress = user.Email, Callback = callbackUrl })

 public async Task<string> RenderViewToString<TModel>(string view, TModel model)
    {
        var viewEngineResult = _compositeViewEngine.FindView(_actionContext, view);
        var viewData = new ViewDataDictionary<TModel>(new EmptyModelMetadataProvider(), new ModelStateDictionary())
        {
            Model = model
        };
        using (var sw = new StringWriter())
        {
            var viewContext = new ViewContext(
                _actionContext,
                viewEngineResult.View,
                viewData,
                new TempDataDictionary(new HttpContextAccessor(), new SessionStateTempDataProvider()),
                sw,
                new HtmlHelperOptions());
            await viewEngineResult.View.RenderAsync(viewContext);
            return sw.ToString();
        }
    }
RenderViewToString(@/Views/Email/ActivateEmail),新建ActivateEmail(){Emailaddress=user.Email,Callback=callbackUrl})
公共异步任务RenderViewToString(字符串视图,TModel模型)
{
var viewEngineResult=_compositeViewEngine.FindView(_actionContext,view);
var viewData=new ViewDataDictionary(new EmptyModelMetadataProvider(),new ModelStateDictionary())
{
模型
};
使用(var sw=new StringWriter())
{
var viewContext=新的viewContext(
_行动背景,
视图引擎结果视图,
viewData,
新建TempDataDictionary(新建HttpContextAccessor(),新建SessionStateTempDataProvider()),
西南,
新的HtmlHelpOptions());
等待viewEngineResult.View.RenderAsync(viewContext);
返回sw.ToString();
}
}

可以将每页翻译成字符串。我用这个作为电子邮件模板。 您可以设置自己到通用控制器的路由或创建自己的路由

使用这段代码,您可以生成一个要字符串的视图

 RenderViewToString(@"/Views/Email/ActivateEmail", new ActivateEmail() { Emailaddress = user.Email, Callback = callbackUrl })

 public async Task<string> RenderViewToString<TModel>(string view, TModel model)
    {
        var viewEngineResult = _compositeViewEngine.FindView(_actionContext, view);
        var viewData = new ViewDataDictionary<TModel>(new EmptyModelMetadataProvider(), new ModelStateDictionary())
        {
            Model = model
        };
        using (var sw = new StringWriter())
        {
            var viewContext = new ViewContext(
                _actionContext,
                viewEngineResult.View,
                viewData,
                new TempDataDictionary(new HttpContextAccessor(), new SessionStateTempDataProvider()),
                sw,
                new HtmlHelperOptions());
            await viewEngineResult.View.RenderAsync(viewContext);
            return sw.ToString();
        }
    }
RenderViewToString(@/Views/Email/ActivateEmail),新建ActivateEmail(){Emailaddress=user.Email,Callback=callbackUrl})
公共异步任务RenderViewToString(字符串视图,TModel模型)
{
var viewEngineResult=_compositeViewEngine.FindView(_actionContext,view);
var viewData=new ViewDataDictionary(new EmptyModelMetadataProvider(),new ModelStateDictionary())
{
模型
};
使用(var sw=new StringWriter())
{
var viewContext=新的viewContext(
_行动背景,
视图引擎结果视图,
viewData,
新建TempDataDictionary(新建HttpContextAccessor(),新建SessionStateTempDataProvider()),
西南,
新的HtmlHelpOptions());
等待viewEngineResult.View.RenderAsync(viewContext);
返回sw.ToString();
}
}

是的,我考虑过这一点,但我更想知道框架中是否存在支持。我想象一下startup.csi中的app.UseRazorPages()之类的东西。是的,我考虑过这一点,但我更想知道框架中是否存在支持。我想象startup.cs中的app.UseRazorPages()之类的东西