3 回答

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
這很正常,這就是HTML助手的工作方式。他們首先使用POST請求的值,然后使用模型中的值。這意味著,即使您在控制器操作中修改了模型的值(如果POST請求中存在相同的變量),您的修改也將被忽略,并將使用POSTed的值。
一種可能的解決方法是在試圖修改值的控制器操作中,從模型狀態(tài)中刪除該值:
// 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幫助程序,該幫助程序?qū)⑹冀K使用模型的值而忽略POST值。
還有另一種可能性:
<input type="hidden" name="Step" value="<%: Model.Step %>" />

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
在編寫向?qū)r(shí)會遇到相同的問題,該向?qū)г诿總€(gè)步驟都顯示較大模型的不同部分。
來自“第1步”的數(shù)據(jù)和/或錯(cuò)誤將與“第2步”混合,以此類推,直到我最終意識到ModelState被“怪罪”。
這是我的簡單解決方案:
if (oldPageIndex != newPageIndex)
{
ModelState.Clear(); // <-- solution
}
return View(model[newPageIndex]);
- 3 回答
- 0 關(guān)注
- 560 瀏覽
添加回答
舉報(bào)