【问题标题】:Render Razor Code inside HTML在 HTML 中渲染 Razor 代码
【发布时间】:2016-03-23 19:46:33
【问题描述】:

我有一些 HTML 保存在我的数据库中,稍后会对其进行修改并保存在变量中,最后使用 @Html.Raw( Model.Page.Html ) 将其打印在我的视图中。

问题是,这个 HTML 包含一些 Razor 代码,例如 ViewBag.Email。在打印 HTML 之前如何渲染这个 Razor 代码?我已经尝试将它放在 Partial View 上并在 HTML 中调用它然后打印它,但它也不起作用。

有些人向我指出了 RazorEngine 库,但我无法做到这一点,我安装了 3.7.7 版,但文档对我来说有点混乱。

如果RazorEngine 是我的最佳选择,谁能提供一个示例,说明如何在打印之前呈现我的 HTML?

编辑

这是我的问题的一个例子:我的联系页面里面有一个表格。在我的Filter 的某个时间点,我检查了请求是否来自移动设备,并使用此信息设置 ViewBag 上的输入类型,例如:

<input type="@ViewBag.ITEmail" placeholder="E-mail" name="cEmail">

此 HTML 是从我的数据库中获取并传递给我的助手以修改一些信息,然后使用 @Html.Raw( Model.Page.Html ) 将其打印在我的 View 上。

【问题讨论】:

  • @MuratYıldız,我的问题不在于 HTML 本身,而在于我的 HTML 中的 Razor sintax。我将用一个例子来更新我的问题。
  • 我认为最好的解决方案是继续尝试使用 RazorEngine 但不要使用 ViewBag,使用模型。
  • @ZippyV,我确实可以使用模型,但我的问题是我仍然无法弄清楚如何实现 RazorEngine。

标签: c# asp.net-mvc asp.net-mvc-3 razorengine


【解决方案1】:

Razor 视图是动态构建的。每次编辑剃刀文件时,它都会在后台编译并内置到新的 dll 中。

基本上,您必须以某种方式触发构建过程,这通常在更改 cshtml 文件时触发。所以,你必须这样做。加载并保存文件。或者深入挖掘内部结构......

【讨论】:

  • 我没有将 HTML 保存在物理文件中,我将 HTML 保存在我的数据库中,然后我将 HTML 作为字符串获取并使用Html.Raw( "&lt;div&gt;My name is @ViewBag.MyName&lt;/div&gt;" ) 将其打印在View 上。他们的问题是View 打印&lt;div&gt;My name is @ViewBag.MyName&lt;/div&gt; 而不是&lt;div&gt;My name is Terkhos&lt;/div&gt;
  • 我了解到您没有保存到物理文件。我是说你必须这样做才能触发构建过程。这就是 asp.net mvc 的工作原理。
  • 我现在明白了,问题是我已经研究过了,我无法弄清楚如何去做。我认为我拥有的最佳选择是 RazorEngine,但我无法找到实现方式。
猜你喜欢
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 2014-05-15
  • 2015-02-11
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
相关资源
最近更新 更多