我正在使用ASP.NET MVC 3,並且有幾個頁面,其中大部分視圖模型是隻讀的。一個例子領域會像這樣:ASP.NET MVC 3 - 在視圖中處理模型的最佳實踐
<div class="display-label">My Field</div>
<div class="display-field">@Model.MyField</div>
後來我就當用戶在輸入一些驗證文字,像這樣一個領域:當用戶提交表單
@Html.LabelFor(model => model.Verification)
@Html.PasswordFor(model => model.Verification)
和它擊中我控制器,除驗證字段外,ViewModel的字段全爲空。我身邊有這樣得到的方式,到目前爲止,是有幾個HiddenFor領域像這樣:
@Html.HiddenFor(model => model.MyField)
然而,這變得醜陋真快。有沒有更好的方式來處理視圖狀態下的模型,所以在表單提交的POST過程中,我可以獲取所有的字段?如果驗證文本在POST期間不匹配,這很重要,我需要返回視圖模型而不從數據庫重新檢索它。
感謝您的任何建議。
你可以通過使用助手'@ Html.AntiForgeryToken()'來解決安全問題嗎? – Brandon
我對此表示懷疑。我不太瞭解AntiForgeryToken功能,但很可能用戶可以查看頁面的源代碼,以查看它們需要提供哪些令牌才能運行。僞造令牌更多用於跨站點腳本攻擊,而不是用於價值保護,現在有辦法知道是否要提供字段。任何意味着安全的事情都需要在服務器端進行處理,並且您不能依賴客戶端功能來實現安全 – KallDrexx
我最終只是將控件中的對象實例重新加載。 – Brandon