客户端验证不使用外键

时间:2012-12-04 18:01:39

标签: asp.net-mvc-3

客户端验证仅对我的外键不起作用。

我有

<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文件中。 / p>

我没有js错误,我用firebug进行监控。一切看起来都很完美,但显然不是。

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

非常感谢帮助。

以下是Html部分。它包含在使用块中。它是标准的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>

1 个答案:

答案 0 :(得分:0)

我认为html中没有呈现元数据属性。请在您的视图中尝试此操作:

if (this.ViewContext.FormContext == null) 
{
    this.ViewContext.FormContext = new FormContext(); 
}