我正在开发一个 ASP.NET MVC3 项目,我在其中定义了以下模型:
public class Model{
[Key]
int Id { get; set; }
int MappedId { get; set; }
}
此模型从 Controller 传递到 Razor 视图,如下所示:
public class Controller:Controller{
public ActionResult Edit(int id) {
Model model = repository.Get(id);
return View(model);
}
}
模型属性在视图中呈现:
@using(Html.BeginForm()) {
@Html.HiddenFor(model => model.Id);
@Html.HiddenFor(model => model.MappedId)
}
奇怪的是,两个隐藏的输入都获得了相同的值,即使模型属性在传递给视图时具有不同的值。例如,如果 Model.Id 的值为 0 且 Model.MappedChannelId 的值为 7,则两个隐藏输入都设置为相同的值 7:
<input id="Id" class="valid" type="hidden" value="7" name="Id" data-val-required="The Id field is required." data-val-number="The field Id must be a number." data-val="true">
<input id="MappedId" class="valid" type="hidden" value="7" name="MappedId" data-val-required="The MappedId field is required." data-val-number="The field MappedId must be a number." data-val="true">
有没有人知道为什么 Html.HiddenFor(model=> model.Id) 将值设置为与 model.MappedId 相同的值,即使 model.Id 在传递给视图时具有不同的值?