【问题标题】:Render razor view to string without munging the html在不修改 html 的情况下将剃刀视图渲染为字符串
【发布时间】:2013-08-22 17:52:26
【问题描述】:

我之前找到了有关如何将 MVC 4 视图呈现为字符串的答案。但是,我开始使用 Visual Studio 2013,现在结果不如预期。见下文。

 <$A$><$B$> <$C$> class="panel"<$D$>> <$E$> class="cover-wrapper"<$F$>> <$G$> href="     
 <$H$>/book/<$I$><$J$>1<$K$><$L$>/<$M$>"<$N$>><$O$> src="<$P$>http://www.
 example.com/images/image.jpg<$Q$>"<$R$> class="cover"<$S$> /> <$T$> href="<$U$>
 <$V$>"<$W$> target="_blank"<$X$> rel="nofollow"<$Y$> class="amazon-button"<$Z$>> <$a$> 
 class="amazon-cart"<$b$>> Link → 
 <$c$> class="content"<$d$>>..........

正在使用的代码是这样的:

    public string RenderRazorViewToString(string viewName, object model)
    {
        ViewData.Model = model;
        using (var sw = new StringWriter())
        {
            var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
            var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
            viewResult.View.Render(viewContext, sw);
            viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
            return sw.GetStringBuilder().ToString();
        }
    }

知道为什么所有的字母和美元符号现在都显示出来了,或者我需要如何更改我的代码以获取可用的 html?

【问题讨论】:

  • 当您升级到 Visual Studio 2013 时,您是否也更改了项目所针对的 .NET Framework 版本(例如,从 4.0 到 4.5 或从 4.5 到 4.5.1)?。
  • @DanM 我没有改变任何东西。刚从源代码管理中打开它,添加了 DLL 重新安装了一些软件包。我需要这样做吗?
  • Jed,不,我只是问,因为如果您更改了 .NET Framework 版本,您似乎更有可能获得类似的更改。 Visual Studio 只是一个编写/编辑/编译的环境,如果没有代码/库/框架发生变化,你应该得到相同的结果。

标签: asp.net-mvc visual-studio razor


【解决方案1】:

这实际上是我在夏天遇到的一个错误,请在此处查看错误报告和 Microsoft 的回复 bug and workaround。好消息是,根据 MS 的说法,它应该在 VS2013 发布时修复。

解决方法是禁用浏览器链接功能,请参阅此处browser link feature

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 2021-07-28
    相关资源
    最近更新 更多