【发布时间】:2015-11-08 14:43:25
【问题描述】:
有没有办法将文本作为 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 代码之外,这一切都很有效。
非常感谢任何帮助或建议。
【问题讨论】: