Jquery验证MVC3 asp.net没有显示验证消息

时间:2013-02-11 01:11:47

标签: jquery asp.net-mvc asp.net-mvc-3 unobtrusive-validation

我在我的模特身上有这个

    [Required]
    public string AppName { get; set; }

在我的布局页面上

<script src="@Url.Content("~/Scripts/jquery-ui-1.8.24.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>



my view has this inside BeginForm


   @Html.EditorFor(model => model.App.AppName, new { size = 35 })
    @Html.ValidationMessageFor(model => model.App.AppName)
    <input type="submit" value="Start Business" class="demo-button ui-state-default ui-corner-all" />


this is how its rendered

            <input id="App_AppName" class="text-box single-line watermark" type="text" value="" name="App.AppName" data-val-required="The AppName field is required." data-val="true">

<span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="App.AppName"></span>

当我点击提交时,我没有得到任何验证说AppName是必需的,但它只是回复到具有空字段的服务器。

我在validationMsgFor中添加了几个隐藏的字段,这是有用的。

所以我拥有的是

public class AppContent
{

    public App App { get; set; }                
    public bool CreateModal { get; set; }
    public AppContent()
    {

    }

}

我的观点是AppContent类型。

我注意到的一件事是,当我直接添加App对象的视图时,AppName会根据需要被检测到。但是当我使用具有AppName类型的AppCOntent进行验证时,验证不会显示,但对于非字符串的其他隐藏字段,它会起作用。

3 个答案:

答案 0 :(得分:0)

您必须在web.config中启用客户端验证。

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

答案 1 :(得分:0)

你必须把这个脚本

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

答案 2 :(得分:0)

这是因为我有水印,我不得不使用占位符。