2

假设我有一个模型:

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 来调用操作,文本框将显示值 15 而不是 49。MVC 将忽略我在操作中设置的 ID 属性,并使用查询中的那个。

考虑到这种行为没有记录在案,我觉得这很奇怪。

对此有什么好的评论吗?

4

3 回答 3

8

ModelState.Clear()在动作开始时使用

于 2012-10-03T20:53:08.273 回答
1

代替

@Html.TextBoxFor(x => x.Id)

利用:

@Html.TextBoxFor(x => Model.Id)

看看这是否为您提供了您正在寻找的功能。

于 2012-10-03T20:31:34.533 回答
1

这是一个常见问题,并在各个地方都有记录。一个很好的例子在这里:

http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

于 2012-10-03T21:01:11.660 回答