说我有一个模特:
public MyClass
{
public int Id {get;set;}
public string Name {get;set;}
public int ContentId {get;set;}
}
我们假设我访问控制器的动作:
[HttpGet]
public ActionResult Create(int id)
{
MyClass mc = new MyClass();
mc.Id = 49;
mc.ContentId = id;
mc.Name = "Sample";
return View("Create", mc);
}
“创建”视图是使用MyClass强类型的,它有助手@ Html.TextBoxFor(x => x.Id)。
如果我通过调用MyController / Create?id = 15来调用action,则textbox将显示值15而不是49.MVC将忽略我在操作中设置的ID属性,并使用查询中的ID属性。
我认为这种情况很奇怪,因为这种行为无法记录。
对此有何好的评论?
答案 0 :(得分:7)
在行动开始时使用ModelState.Clear()
答案 1 :(得分:1)
而不是
@Html.TextBoxFor(x => x.Id)
使用:
@Html.TextBoxFor(x => Model.Id)
看看它是否能为您提供所需的功能。
答案 2 :(得分:1)
这是一个常见问题,并记录在各个地方。这是一个很好的例子: