簡體   English   中英

MVC 2視圖顯示錯誤的模型信息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM