我试图通过Microsoft提供的不显眼验证来处理ASP.NET MVC 3项目中的errorPlacement
JQuery Validate插件.我永远无法点击errorPlacement函数,我不确定我做错了什么.我在下面提供模型/视图/控制器的代码.请让我知道我做错了什么?
视图
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<Project.Models.SampleModel>" %> <!DOCTYPE html> <html> <head runat="server"> <title>Index</title> </head> <body> <script src="<%: Url.Content("~/Scripts/jquery-1.4.4.min.js") %>" type="text/javascript"></script> <script src="<%: Url.Content("~/Scripts/jquery.validate.js") %>" type="text/javascript"></script> <script src="<%: Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js") %>" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { $("#form").validate( { errorPlacement: function (error,element) { alert("Code to define customer error"); } }) }); </script> <% using (Html.BeginForm("Index","Sample",FormMethod.Post,new { id = "form" })) { %> <%: Html.ValidationSummary(false) %> <fieldset> <legend>NewModel</legend> <div class="editor-label"> <%: Html.LabelFor(model => model.Name) %> </div> <div class="editor-field"> <%: Html.EditorFor(model => model.Name) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.Age) %> </div> <div class="editor-field"> <%: Html.EditorFor(model => model.Age) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.Address) %> </div> <div class="editor-field"> <%: Html.EditorFor(model => model.Address) %> </div> <br /> <p> <input type="submit" id="submit" value="Submit" /> </p> </fieldset> <% } %> </body> </html>
模型
public class SampleModel { [required] [DataType(DataType.Text)] [displayName("Name")] public string Name { get; set; } [required] [DataType(DataType.Text)] [displayName("Age")] public string Age { get; set; } [required] [DataType(DataType.MultilineText)] [displayName("Address")] public string Address { get; set; } }
调节器
public class SampleController : Controller { // // GET: /New/ public ActionResult Index() { return View(); } }
解决方法
我找到了一篇解决这个问题的文章
here.
简而言之:
var valOpts = $.data($('form')[0],'validator').settings; //we've got jQuery.validation settings woohoo! var baseError = valOpts.errorPlacement; valOpts.errorPlacement = function (error,input) { input.attr('title',error.text()); //error is the $('<span>...</span>') baseError(error,input); //removing this breaks form validation };