从String执行Razor代码

时间:2015-08-15 13:47:16

标签: html asp.net razor

有没有办法将文本作为Razor代码执行?我将表单的HTML / JavaScript存储在数据库字段中。一切都很好,除了我想在拉入并在视图中渲染时在字段上设置值。例如:

<p class="form-control-static" id="requested_by">@User.Identity.GetUserName()</p>

不幸的是,当拉入并渲染时,字段的值只是文本“@ User.Identity.GetUserName()”而不是从该方法返回的值。

如果您对我为什么这样做感到好奇,那么表单需要根据登录的人来完全动态。我已经仔细研究了几个不同的解决方案,但这个解决方案似乎是最好的。如果你有这些想法,我肯定会接受其他一些想法。

以下是我能够考虑的解决方案:

在数据库中存储字段名称和属性,并通过迭代动态创建表单。这里的问题是一些字段被分组到字段集中,一些字段有插件,一些部分需要自定义按钮等。这肯定可以完成,但我认为这是过度工程和强制解决方案。

在HTML / JavaScript / Razor中构建表单,并将所有字段名称存储在数据库中,并附带相关的用户ID。有条件地根据登录用户是否有权访问该字段来显示字段。 Pseudo: @if(user.FormFields.Contains("field_name") ...

我正在尝试的解决方案:将所有HTML / JavaScript / Razor存储在数据库中作为文本并使用@Html.Raw(HtmlFromDatabase)进行渲染。正如我所说,除了没有执行的Razor代码之外,这一切都很有名。

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

使用:

@Html.Raw(System.Web.HttpUtility.HtmlDecode(Model.yourhtmlvalue))

<%= System.Web.HttpUtility.HtmlDecode(yourEncodedHtmlFromYouDatabase) %>

更多信息:Here