我正在用VS2015和ASP.NET 5构建一个由WEB API支持的angular应用程序。
在以前的ASP.NET版本中,可以提供CSHTML页来代替超文本标记语言页面,而不必构造MVC控制器和路由。例如,您创建了一个ASP.NET网页(Razor)项目。
基本上,您可以转到localhost/index.cshtml,假设页面上有类似@DateTime.Now.ToString()的内容,它将返回一个包含日期的白色页面。
我想通过CSHTML提供我的客户端标记,而不是HTML静态字段,因为我想利用一些方便的服务器端东西,比如TagHelpers。
从ASP.NET 5的Beta8开始,这是可能的吗?
发布于 2015-11-01 02:12:23
可以将每个页面转换为字符串。我将其用于电子邮件模板。您可以设置自己到通用控制器的路由或创建自己的middleware。
有了这段代码,你就可以生成一个字符串视图
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();
}
}https://stackoverflow.com/questions/33447638
复制相似问题