[英]MVC 2 View showing wrong model info
我正在為項目使用MVC 2,但視圖存在問題。 在控制器中,我有以下代碼:
return View(calendarDay);
如果我調試此行並檢查calendarDay,它將告訴我calendarDay.Id屬性等於2。在視圖中,我有類似以下代碼:
<%: Html.HiddenFor(model => model.Id) %>
但是,在將視圖綁定到具有id屬性= 2的calendarDay后顯示視圖時,將在生成的HTML上獲取該視圖:
<input id="Id" name="Id" type="hidden" value="1">
該值為1,所以當我執行TryUpdateModel(calendarDay)時,它會將Id屬性設置為1而不是2;當我進入存儲庫以刪除該對象時,它會崩潰,因為它找到了錯誤的對象。 有人知道我可能做錯了嗎?
我懷疑您正在嘗試將控制器操作中的POSTed值(即1)修改為2。這是不可能的,因為這是所有HTML幫助器的工作方式,它是有意設計的:綁定時,他們將首先查看POSTed值。然后在模型中 因此, HiddenFor
幫助程序將忽略模型的ID,並使用發布的ID。
解決方法是:
<input type="hidden" name="Id" value="<%: Model.Id %>" />
如@jfar在注釋部分所建議的,另一種解決方法是在返回視圖之前在post操作中清除模型狀態:
MoselState.Clear();
似乎問題在於視圖使用的是控制器的ID,而不是模型的ID。 我剛剛更改了參數名稱,現在可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.