2012-12-04 47 views
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> 

列入以及在我的web.config文件

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

集。

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

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

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

我没有得到js错误,我用萤火虫监控。一切看起来都很完美,但它显然不是。

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

非常感谢帮助。

以下是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> 
+0

你可以检查并发布生成的HTML在FiscalYearId下拉?另外,确保你的表单元素在@using(Html.BeginForm()){}块中。 –

+0

用html更新了我的问题 – Erik

+0

是的,选择没有验证属性,这不是javascript问题 – karaxuna

回答

0

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

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

但是,我确实尝试过,没有运气。 – Erik

+0

是您在Html.BeginForm中发布的HTML吗? – karaxuna

+0

是的,它发布在Html.BeginForm中 – Erik