我有一个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字段在那里,但只设置为:value =“”)
编辑:出于完整性考虑,这是控制器(也是问题的根源):
public ActionResult GetTeam(int? id)
{
return PartialView("EditTeam", id.HasValue ? _teamLogic.GetById(id.Value) : new TeamModel());
}
我会在这里解决自己的问题,因为我已经设法解决了这个问题。我应该已经将此代码添加到问题中(这是被调用以使用表格加载模态的控制器):
public ActionResult GetTeam(int? id)
{
return PartialView("EditTeam", id.HasValue ? _teamLogic.GetById(id.Value) : new TeamModel());
}
问题在于传入的参数是“ id”。当更改为“ teamId”时,它可以工作。我猜想MVC试图变得更聪明,并将其标识为模态上的关键值,因此在调用new时将其设置为空白。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句