c#-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现在将为null,并且视图将无法显示它.
我知道我可以添加
@Html.HiddenFor(m => m.StaticProp1)
@Html.HiddenFor(m => m.StaticProp2)
我认为它可以正常工作,但是我想知道是否还有另一种更好的方法.
我的值已经采用(< p> @ Model.StaticProp1< / p>)的形式.有没有办法将模型绑定到这样的不可编辑标签?是否有HTML助手可以执行类似的操作?
顺便说一句,如果不是很明显,我只是从MVC开始,所以如果我完全不了解这一点,请告诉我!
解决方法:
您要保留的模型的每个属性都必须采用表格的形式(在编辑器或隐藏字段中).您可以按照建议使用Html.HiddenFor().如果要避免使用隐藏字段使视图超载,则可以仅在隐藏字段中存储实体的ID,然后根据Post操作中的ID提取其余数据.或将Html.TextBoxFor()与readonly属性一起使用,有关其的更多信息,请参见this question(我也喜欢第二个答案中的方法).
标签:razor,http-post,asp-net,c,asp-net-mvc 来源: https://codeday.me/bug/20191122/2061754.html