我試圖實現的Razor Html Helper中有一個特別有趣的問題。此幫助程序的目標是接受System.Type,從該Type的屬性和關聯屬性生成一個JQuery驗證表單,並返回一個JavaScript字符串,該字符串將在運行時用作所生成表單的驗證規則。我通過重複調用@ Html.Raw()來生成表單,並在遍歷屬性和屬性時構建它。最初,html helper是寫在將要使用它的唯一文件中,但由於這是一個廣義和常用的幫助器,我已將它移到我的項目中的App_Code文件夾中。從MVC 3 Razor Html Helper中檢索數據
這就是問題:我發現ViewData不適用於當這個幫助器在App_Code中時從輔助器返回任何數據。本來,我有兩個助手;一個用於在ViewData中生成表單和松鼠JavaScript字符串,另一個用於獲取相同的JavaScript字符串並將其打印到客戶端腳本塊中的文檔中。我希望這個幫助器不僅可以生成表單,還可以通過一次傳遞給我這個JavaScript字符串,因此不必重複O(n)工作。
原僞代碼:
@helper MakeFormAndValidationRule(Type)
{
//generate form
//write form using @Html.Raw()
//generate validation rules simultaneously
//store validation rules in ViewData
}
@helper WriteValidationRules()
{
@Html.Raw(ViewData["rules"]);
}
<form>
MakeFormAndValidationRule(Type)
</form>
<script>
form.validate(@WriteValidationRules())
</script>
的問題:什麼是「最佳實踐」爲這些類型的案件?我可以將驗證規則寫入DOM以供以後檢索,並在運行時使用JQuery魔術將其取出,但是如果有更好,更清晰的方法來執行此操作,我想知道。