3 回答

TA貢獻1793條經驗 獲得超6個贊
這很正常,這就是HTML助手的工作方式。他們首先使用POST請求的值,然后使用模型中的值。這意味著,即使您在控制器操作中修改了模型的值(如果POST請求中存在相同的變量),您的修改也將被忽略,并將使用POSTed的值。
一種可能的解決方法是在試圖修改值的控制器操作中,從模型狀態中刪除該值:
// remove the Step variable from the model state
// if you want the changes in the model to be
// taken into account
ModelState.Remove("Step");
model.Step = 2;
另一種可能性是編寫自定義HTML幫助程序,該幫助程序將始終使用模型的值而忽略POST值。
還有另一種可能性:
<input type="hidden" name="Step" value="<%: Model.Step %>" />

TA貢獻1804條經驗 獲得超7個贊
在編寫向導時會遇到相同的問題,該向導在每個步驟都顯示較大模型的不同部分。
來自“第1步”的數據和/或錯誤將與“第2步”混合,以此類推,直到我最終意識到ModelState被“怪罪”。
這是我的簡單解決方案:
if (oldPageIndex != newPageIndex)
{
ModelState.Clear(); // <-- solution
}
return View(model[newPageIndex]);
- 3 回答
- 0 關注
- 561 瀏覽
添加回答
舉報