期间维持值我有去像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(...) –