首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET 5网站(Razor)

ASP.NET 5网站(Razor)
EN

Stack Overflow用户
提问于 2015-10-31 11:05:21
回答 1查看 156关注 0票数 1

我正在用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开始,这是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2015-11-01 02:12:23

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

有了这段代码,你就可以生成一个字符串视图

代码语言:javascript
复制
 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();
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33447638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档