2012-12-06 79 views
0

基本上我正在談論我們在ASP.NET中所做的事情,稱爲ViewState。 這裏是例子,以保持它的簡單,我有一個模範員工:如何在將模型保存到數據庫之前在MVC3中創建/編輯時保留模型?

public class Employee 
{ 
    public string EmployeeId { get; set; } 
    public string Name { get; set; } 
    public string Company { get; set; } 
    public string Phone { get; set; } 
    public string Address { get; set; } 
} 

我公司創建的記錄與他們的僱員,姓名和公司員工。 員工只需輸入(更新)他的電話號碼和地址。 當我在編輯/或創建模式下爲員工輸入此信息時,員工ID,姓名和公司輸出的形式與文本相同,而電話和地址是可編輯字段(Html.EditorFor),它允許保留輸入的值模型對象。

當這個表單被HTTP回發時,可以說,驗證失敗,表單再次呈現給用戶以更正他的輸入(View(model))。

但是,EmployeeID,Name和Company的值會丟失,因爲它們未被定義爲Html.EditorFor,例如Phone和Address,因此在將提交的模型再次傳遞到View中時不會保留這些值。

如何在模型中保留(堅持)那些屬性(不可編輯)?

謝謝。

回答

1

只需使用Html.HiddenFor並將值存儲在頁面上。你也可以使用mvc futures項目和Html.Serialize它,但是當你沒有必要的時候你會模仿viewstate。

+0

這是我第一次使用Html.HiddenFor。 我不確定這是否是「正確」的MVC方法。 因此,基本上如果我有20個字段的模型,其中19個字段僅用於顯示,只有1個字段是可編輯的,我將不得不放置19個Html.HiddenFor元素? – monstro

+0

是的,雖然在那種情況下在客戶端存儲很多字段,您也可以緩存它們或將對象存儲在tempdate中,並在回發中檢索,因爲頁面只是作爲存儲機制使用。 TempData會在幕後使用會話對象,因此請注意與此相關的性能問題以及當前用戶的重疊請求。 –

相關問題