期間維持值我有去像MVC模型綁定 - 部分編輯
public class Mod
{
public string StaticProp1 {get; set;}
public string StaticProp2 {get; set;}
public string EditableProp1 {get; set;}
}
我想,我可以編輯EditableProp1
但如果StaticProp1
,StaticProp2
顯示,但不能編輯視圖模型類。
我創建了一個強類型的視圖:
@model Mod
@using (Html.BeginForm())
{
<p>@Model.StaticProp1</p>
<p>@Model.StaticProp2</p>
@Html.TextBoxFor(m => m.EditableProp1)
<input type="submit" value="Save" />
}
在我的控制器,當我處理的動作我覺得EditableProp1罰款。
[HttpPost]
public ActionResult Edit(Mod model, FormCollection collection)
{
string editableProp = model.EditableProp1; //This works fine
string staticProp1 = model.StaticProp1; //Missing
return View(model);
}
這會導致一個問題,如果我回來後因某種原因如staticProp1現在將是無效和視圖將無法顯示。
我知道,我可以添加
@Html.HiddenFor(m => m.StaticProp1)
@Html.HiddenFor(m => m.StaticProp2)
我的看法,並認爲它會正常工作,但我不知道是否有其他更好的辦法。
我的數值已經在窗體上(<p>@Model.StaticProp1</p>
)。有沒有辦法將模型綁定到這樣的不可編輯標籤?有沒有一個HTML助手做這樣的事情?順便說一句,如果它不明顯,我剛剛開始與MVC,所以如果我完全錯過了這一點,請讓我知道!
如果'StaticProp'來自數據庫或東西,你可以再次讀取它們並在回發方法中設置模型數據 – Shoe
爲什麼您要避免使用HiddenFor?這是一個常見的用例。 –
我想避免它,因爲它們中有很多(我的模型比我在這裏展示的更復雜)。它只是覺得他們混淆了這個觀點,而且由於價值觀已經在形式上,我認爲也許還有另一種方式。 有點像@ Html.LiteralFor(...) –