0

客户端验证仅适用于外键。

我有

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

包括以及

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

在我的 web.config 文件中设置。

没有自定义属性或任何东西。这很简单

[Required(ErrorMessage = "Fiscal year is required")]
[Display(Name = "Fiscal Year")]
public int FiscalYearId { get; set; }

对此有什么想法吗?我已经搜索了一个解决方案,但我发现的只是它根本不起作用的情况,并且大多数解决方案都说要确保上述两个脚本的来源并将上述两个键添加到 web.conifg 文件中。

我没有收到任何 js 错误,并且我使用 firebug 进行了监控。一切似乎都完美无缺,但显然并非如此。

一旦我更正了非外键字段并重新提交,数据验证就会在服务器端工作。这是一个问题,因为它创建了双重验证并且惹恼了用户。

非常感谢您的帮助。

下面是 Html 部分。它包含在 using 块中。它是标准的 MVC3 生成的 CRUD 代码。

<div class="editor-label">
    <label for="FiscalYearId">Fiscal Year</label>
</div>
<div class="editor-field">
    <select id="FiscalYearId" name="FiscalYearId">
        <option value="">---Select Fiscal Year---</option>
        <option value="1">FY2013</option>
    </select>
    <span class="field-validation-valid" data-valmsg-for="FiscalYearId" data-valmsg-replace="true"></span>
</div>
4

1 回答 1

0

我认为 html 中没有呈现元数据属性。在你看来试试这个:

if (this.ViewContext.FormContext == null) 
{
    this.ViewContext.FormContext = new FormContext(); 
}
于 2012-12-04T20:43:32.763 回答