启用客户端验证不起作用

时间:2012-05-18 19:28:45

标签: jquery ajax asp.net-mvc validation

这是我在Master页面中的脚本部分:

<script src="../../Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.ui.datepicker.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.ui.core.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.ui.widget.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>

<script src="../../Scripts/Validation/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="../../Scripts/Validation/MicrosoftMvcValidation.js" type="text/javascript"></script>

这就是我的表格:

    <% Html.EnableClientValidation(); %>
                <% using (Html.BeginForm("Inscription", "Home", FormMethod.Post, new { @class = "search_form", enctype = "multipart/form-data"}))
       { %>
        <%: Html.ValidationSummary(true) %>
            <div class="editor-label">
           <p>
            <%: Html.LabelFor(model => model.Mailag) %>
            </p>
        </div>
        <div class="editor-field">
        <p>
            <%: Html.EditorFor(model => model.Mailag, new { @class = "text longfield" })%>
            <%: Html.ValidationMessageFor(model => model.Mailag) %>
            </p>
// the reste of code is similaire to the first editor label :
        </div>
    <% } %>

我已经在博客中发出相同的指令来激活客户端,但不幸的是它对我没用:(我想我错过了什么? 服务器验证工作非常好。

3 个答案:

答案 0 :(得分:1)

我已移除所有Microsoft*.js并将其替换为:

<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>

一切都很好:)

答案 1 :(得分:0)

我认为您可以尝试以下方法来验证代码可能不适合您的原因。

1)请转到浏览器并查看source of the HTML并确保您尝试包含的脚本文件存在。

2)此外,如果您在Mozilla上进行测试,可以检查代码firebug,可以将其安装为扩展程序,以查看哪些内容出错。

希望有所帮助

答案 2 :(得分:0)

我看不出你的代码太多错了,但是看起来你错过了对它的引用 的 MicrosoftAjax.js 即可。试着把它包括在内:

 

另外,你的控制器是什么样的?您在检查 modelState 是否有效吗?

[HttpPost]
public ActionResult Create(Course course)
{
  try
  {
    if (ModelState.IsValid)
    {
      _courses.Add(course);
      return RedirectToAction("Index");
    }
    return View();
  }
  catch
  {
    return View();
  }
}

如果您不检查,View不会知道验证失败。第三,你是否用正确的属性装饰了你的课程?例如:

public class Course
{
  [Required(ErrorMessage = "Course title is required")]
  public string Title { get; set; }

  [StringLength(5, ErrorMessage = "Course can have up to 5 days")]
  public string Days { get; set; }    

}