我有一个使用标准 MVC 3.0 模板验证(jquery.validate.min.js 和 jquery.validate.unobtrusive.min.js)的表单。我有一个模型,它由一个带有 [Required] 属性的字符串属性组成,如下所示:
public class TestViewModel
{
[Required]
public string Testing { get; set; }
}
我也有一个相应的视图 Test.cshtml,其中包含一个显示字段和验证消息的表单
@model RealEstate.ViewModels.TestViewModel
@using (Html.BeginForm())
{
<fieldset>
<div class="editor-label">@Html.LabelFor(m => m.Testing)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.Testing)
@Html.ValidationMessageFor(model => model.Testing)
</div>
<p>
<button type="submit" name="buttonValue" value="Ok">Ok</button>
</p>
</fieldset>
}
在控制器中,我按如下方式调用视图:
return View("Test");
问题是,在某些表单中,我注意到验证消息在表单加载后立即显示(而不是在回发之后,正如人们所期望的那样)。在其他形式中,相同的设置运行正常。通过对这个问题的进一步调查,我奇怪地发现行为是由属性名称决定的。例如,如果我将属性命名为“Description”(在模型和视图中),则验证无法正常工作,而如果我将属性命名为“Testing”(如示例中),则一切正常。有没有人遇到过同样的问题?