有沒有辦法將文本作爲Razor代碼執行?我將表單的HTML/JavaScript存儲在數據庫字段中。一切都很好,除了我想在視圖中拉入和渲染時在字段上設置值。例如:從字符串執行Razor代碼
<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代碼外,這一切都很有名。
任何幫助或建議,非常感謝。
不幸的是,這將產生相同的結果。在渲染之前,不會處理HTML字符串中的Razor代碼。 – Joe