我有一个 HiddenFor 字段缺少它的值标签。这是使用剃刀视图引擎的 MVC4 项目。
<input name="Id" id="teamId" type="hidden" data-val-required="The Id field is required." data-val-number="The field Id must be a number." data-val="true"/>
这产生于:
@Html.HiddenFor(m => m.Id, new { id = "teamId" })
从我的模型(使用 System.ComponentModel.DataAnnotations):
public class TeamModel
{
public int Id { get; set; }
[Required(ErrorMessage = "Please enter a team name"), MaxLength(25)]
public string Name { get; set; }
}
将新模型传递给表单时,我什至尝试手动设置 Id 字段,如下所示:
return PartialView("EditTeam", new TeamModel{Id = 5});
但是,这仍然不显示值。奇怪的是它通过了客户端验证但没有通过服务器端验证。我在另一个项目中有类似的设置,效果很好。我看不出它们之间有什么区别。有什么明显的我错过了吗?谢谢 :)
编辑:如果我使用:
@Html.Hidden("test", Model.Id)
有用。HiddenFor 的某些东西将值设置为空白(看到原始 HTML,值字段在那里,但只是设置为:value="")
编辑:为了完整起见,这里是控制器(也是问题的根源):
public ActionResult GetTeam(int? id)
{
return PartialView("EditTeam", id.HasValue ? _teamLogic.GetById(id.Value) : new TeamModel());
}