我有處理信用卡交易的視圖。它使用一個包含CreditCardNumber屬性的簡單模型。如果出現錯誤,我會清空模型上的CreditCardNumber屬性。問題是MVC繼續並填寫CreditCardNumber。我猜測它正在查看發佈的表單值,並試圖幫助我填補它。我不想要這個。如何使MVC Html.EditorFor忽略表格值
如何讓MVC的Html.EditorFor不使用發佈的表單值並獨佔使用我的模型的屬性值?
我有處理信用卡交易的視圖。它使用一個包含CreditCardNumber屬性的簡單模型。如果出現錯誤,我會清空模型上的CreditCardNumber屬性。問題是MVC繼續並填寫CreditCardNumber。我猜測它正在查看發佈的表單值,並試圖幫助我填補它。我不想要這個。如何使MVC Html.EditorFor忽略表格值
如何讓MVC的Html.EditorFor不使用發佈的表單值並獨佔使用我的模型的屬性值?
如果您明確將編輯的模型傳遞給View調用,它應該可以正常工作。
public ActionResult BuyNow(BuyNowViewModel vm)
{
if (!ModelState.IsValid)
{
vm.CreditCardNumber = null;
return View(vm);
}
}
但是,如果'!ModelState.IsValid'正確,您只需要執行此操作? – Tr1stan
沒錯。或者其他一些非標準的驗證代碼在某處失敗(從來不知道,謝謝你的建議)。 –
這正是我已經在做的。該模型在傳遞到視圖時不包含CreditCardNumber –
你的觀點是首先檢查你的ModelState,那麼你的視圖模型。因此,如果您手動更改值,則需要清除模型狀態。
ModelState.Clear();
關於這個問題的有用的博客:http://balawinwin.wordpress.com/2012/11/24/asp-net-mvcs-html-helpers-ignoring-model-changes/
什麼對失敗的請求控制器的回報? –
否則完全填充模型 –