我发现了一些奇怪的行为,想知道是否有其他人遇到过它,如果我是愚蠢的或是否是一个错误。
何时和ID在URL中传递给页面以及具有ID属性的模型
视图为Model.Id
呈现不同的值ViewModle示例
public int Id { get; set; } - value 2
....
控制器示例
public ActionResult Index(int id)
{
// code
return View(model);
}
网址如下 - 活动/索引/ 1 - 网址ID = 1
如果我在我的视图中输入以下内容
@Html.TextBoxFor( x => x.Id)
@Html.TextBoxFor(x => Model.Id)
@Html.TextAreaFor(x => Model.Id)
<p>@Model.Id</P>
我得到以下输出
Textbox的值= 1
TextArea的值= 1 但是
的价值<p>
tag = 2 - 我在ViewModel中传入视图的ID
我通过将ViewModel中的Id字段重命名为TableId
来解决此问题所以在我看来,传入url的Id被Textbox / Area用掉了,段落找到了传递给我的ViewModel的值。很奇怪
答案 0 :(得分:2)
这种行为是设计的 - 尽管最初可能不直观。
内置的html助手优先使用它们来确定一个值 - ModelState(来自Url中的绑定)优先于模型值。
如果手动清除模型状态(例如在控制器中),您将看到渲染的值相同。
E.g。
ModelState.Clear(); //Clears all modelstate.(you can also be more specific
//and only clear specified modelstate values.