不显眼的 JavaScript 如何在 ASP.NET MVC3 中工作?
是否有教程或解释 MVC3 如何使用 HTML5 数据标签实现不显眼的 javascript?我想知道如何为我自己的 javascript 扩展这种做法,特别是如何有效地解析数据标签以执行 javascript、附加事件处理程序等?
Is there a tutorial or explanation how MVC3 implements unobstrusive javascript using HTML5 data tags? I would like to know how I can extend this practice for my own javascript, espescially, how are the data tags efficiently parsed to execute javascript, to attach event handlers, etc.?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 ASP.NET MVC 1 和 2 中,客户端验证和任何 AJAX 行为意味着 ASP.NET MVC 将自动生成用于验证或 AJAX 类的 javascript。结果是嵌入了 javascript 的
标记,该标记将在 HTML 页面上输出或在输入的事件处理程序中输出数据(例如
onclick
)。不显眼的 javascript 通过将所有必要的内容放置在元素的
data-
属性中,消除了在 HTML 页面中嵌入 javascript 的需要。完成此操作后,jquery.validate.unobtrusive
将根据输入控件的data-
属性中的信息验证并执行 AJAX 类。有关更多详细信息,请查看此 asp.net mvc 3 教程提供了一个快速示例。不引人注目的解释是在第二个
启用客户端验证
的末尾。查看这篇博文,其中显示了差异用于不引人注目和正常验证的输出。
In ASP.NET MVC 1 and 2, client side validation and any AJAX behavior meant that ASP.NET MVC would automatically generate javascript for validation or AJAX class. The result was a
<script>
tag with javascript embedded that would be outputted on the HTML page or data in the event handlers of an input (likeonclick
).Unobtrusive javascript eliminates the need to embedded javascript in the HTML page by placing all necessary things in
data-
attributes on the element. With this in place,jquery.validate.unobtrusive
will validate and do AJAX class based on the information in thedata-
attributes of the input control.For more details, take a look at this asp.net mvc 3 tutorial which offers a quick example. The unobtrusive explanation is towards the end under the second
Enabling Client-Side Validation
.Take a look at this blog post which displays the difference of output for unobtrusive and normal validation.
基本上,它只是使用 jQuery 附加事件处理程序,而不是将脚本直接放入 html 属性中。
例如,包含
html 的
文档就绪事件相当于
在本例中,这并不是一个巨大的差异,但对于更复杂的情况,它使代码更加清晰,特别是如果您想使用匿名回调函数。
Basically it's just using jQuery to attach event handlers rather than putting script directly in the html attributes.
For example a document ready event containing
and the html
is equivalent to
In this example it's not a huge difference, but for more complex cases it makes the code much cleaner, especially if you want to use anonymous callback functions.
查看不显眼的脚本文件(如 jquery.unobtrusive-ajax.js),您会发现这只是使用选择器查找具有数据属性的元素的情况。
例如:
我已经开始使用自己的数据属性来连接自动完成和日期选择器等功能。例如,添加一个带有指向远程数据源的 data-autocomplete 属性的输入,然后使用 jQuery 以不显眼的方式将其连接起来。
此处演示,如果您有兴趣: http://www.pluralsight-training.net/microsoft/players/PSODPlayer.aspx?author=scott-allen&name=mvc3-building -ajax&mode=live&clip=0&course=aspdotnet-mvc3-intro
Look in the unobtrusive script files (like jquery.unobtrusive-ajax.js) where you'll find it's just a case of using selectors to find elements with data- attributes.
For example:
I've started using my own data- attributes to hookup features like autocomplete and datepicker. For example, adding an input with a data-autocomplete attribute pointing to a remote data source, then using jQuery to wire it up unobtrusively.
Demonstrated here, if you are interested: http://www.pluralsight-training.net/microsoft/players/PSODPlayer.aspx?author=scott-allen&name=mvc3-building-ajax&mode=live&clip=0&course=aspdotnet-mvc3-intro