2012-12-30 19 views
0

我想验证我的表单,因此我正在查看ASP.NET MVC4示例应用程序的 。我是否需要使用三个JavaScript库进行ASP.NET MVC4验证?

在这里,我看到它使用了以下内容:

jquery.unobtrusive-ajax.js 
jquery.validate.js 
jquery.validate.unobtrusive.js 

谁能解释。我需要所有这些js库吗?我 认为我读了一个地方,一个人现在做 其他工作,但我看到样本仍然加载所有三个。

+0

是的,你需要使用这些,如果你需要客户端验证 –

+0

不,他不需要所有这些脚本,如果他需要客户端验证。这是一个错误的陈述,请阅读我的答案,理解为什么。 –

回答

4

有人可以解释。我需要所有这些js库吗?

不,绝对不是。

对于需要具备以下3个脚本在那个特定的顺序添加jQuery的不显眼的验证:

  1. jquery.js
  2. jquery.validate.js
  3. jquery.validate.unobtrusive.js

jquery.unobtrusive-ajax.js脚本有绝对无关验证。这被所有Ajax.*助手使用(例如Ajax.BeginFormAjax.ActionLink)。

现在,这就是说,ASP.NET MVC 4使用脚本包。例如,当您创建使用Visual Studio中的互联网模板的新ASP.NET MVC 4应用它会创建~/App_Start/BundleConfig.cs文件您包含以下注册:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
      "~/Scripts/jquery.unobtrusive*", 
      "~/Scripts/jquery.validate*")); 

这意味着外的开箱如果您的布局中或查看您致电:

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/jqueryval") 

你会得到在调试模式:

<script src="/Scripts/jquery-1.7.1.js"></script> 
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script> 
<script src="/Scripts/jquery.validate.js"></script> 
<script src="/Scripts/jquery.validate.unobtrusive.js"></script> 

在释放模式(<compilation debug="false">你r web.config),所有这些脚本将被缩小,压缩并捆绑到通过动态端点提供的单个脚本中。

+0

非常感谢。你有什么想法,为什么jquery.unobtrusive-ajax.js作为示例应用程序的一部分?我查过并没有看到任何使用Ajax.BeginForm或Ajax.ActionLink,但我确实在jQuery.validate中看到了ajax.apply。 –

+0

它是作为示例应用程序的一部分,因为Microsoft厌倦了人们对MVC3的抱怨:'该死的,我的Ajax.BeginForm助手不起作用。它不发送AJAX请求。相反,它会替换页面的全部内容。原因是因为这个人只是忘了包含这个脚本。所以他们决定现在将它包括在内。所以,如果那个在MVC3中抱怨的同一个人现在决定使用一些Ajax。*助手,他不需要添加这个脚本。他甚至不知道这个脚本是必需的。我责怪微软这个 –

+0

现在人们甚至不知道这些脚本是什么,也不知道它们为什么包含在它们的默认模板中。更糟糕的是:某些脚本可能会包含在您的网站中,您可能永远不需要使用它。完全废话。 –

相关问题