2012-11-05 20 views
1

我有一個修改日期在我的編輯帖子中被重置爲默認值的問題。看起來模型綁定器忽略了不屬於視圖的屬性。只要我添加了@ Html.HiddenFor(m => m.ModifiedDate),那麼原來的值就包含在傳遞給post操作的對象中。我應該使用HiddenFor處理所有數據實體屬性嗎?我沒有編輯?

我會認爲所有的財產價值將持續這個過程,但這似乎並不是這種情況。我爲我的模型使用了一個sql數據庫,並且在當前上下文中某些字段不可用於編輯。這是否意味着我應該對所有不可編輯的屬性使用HiddenFor來確保原始數據的完整性?

如果有的話,確保添加新字段的方法會自動包含在內?

post方法

[HttpPost] 
    public ActionResult Edit(Customer customer) 
    { 
     //Some code here 
    } 

和視圖

@model MyApp.Models.Customer 
@{ 
    ViewBag.Title = "Edit"; 
} 
<h2> 
    Edit</h2> 
@using (Html.BeginForm()) 
{ 
<fieldset> 
    @Html.HiddenFor(m => m.ModifiedData) 
    @*Some other fields*@ 
</fieldset> 
    <p> 
     <input type="submit" value="Save" /> 
    </p> 
} 

回答

3

MVC僅表單內的職位元件的一個例子。它使用標準的HTTP post方法,與ASP.Net不同,它在ViewState中保存值(這實際上是作爲隱藏元素的形​​式保存的,但您從未真正看到它)。所以是的,如果你想要一個價值堅持下去,你必須把它存儲在表單中。

與ASP.Net相比,它的優勢在於,您可以完全控制在HTTP中向前和向後傳遞的內容,因此不會有更多龐大的ViewState遍佈整個地方,其中90%可能永遠不會使用。通過這種方式,您可以通過ASP.Net無法實現的方式調整通過線路發送的數據。

不,沒有辦法確保隱藏的元素被填充。你需要自己做。同樣,這是因爲表單是無狀態的,就像一個合適的網站應該是!

你可以使用會話,但我不會推薦它。

相關問題