不显眼的 JavaScript 如何在 ASP.NET MVC3 中工作?

发布于 2024-10-12 08:53:35 字数 123 浏览 5 评论 0原文

是否有教程或解释 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一个人练习一个人 2024-10-19 08:53:35

在 ASP.NET MVC 1 和 2 中,客户端验证和任何 AJAX 行为意味着 ASP.NET MVC 将自动生成用于验证或 AJAX 类的 javascript。结果是嵌入了 javascript 的

不显眼的 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 (like onclick).

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 the data- 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.

夜声 2024-10-19 08:53:35

基本上,它只是使用 jQuery 附加事件处理程序,而不是将脚本直接放入 html 属性中。

例如,包含

$("#button1").click(DoStuff);

html 的

<button id="button1" />

文档就绪事件相当于

<button id="button1" onclick="DoStuff()" />

在本例中,这并不是一个巨大的差异,但对于更复杂的情况,它使代码更加清晰,特别是如果您想使用匿名回调函数。

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

$("#button1").click(DoStuff);

and the html

<button id="button1" />

is equivalent to

<button id="button1" onclick="DoStuff()" />

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.

前事休说 2024-10-19 08:53:35

查看不显眼的脚本文件(如 jquery.unobtrusive-ajax.js),您会发现这只是使用选择器查找具有数据属性的元素的情况。

例如:

 $("a[data-ajax=true]").live("click", function (evt) {
        evt.preventDefault();
        ...
 });

 $("form[data-ajax=true]").live("submit", function (evt) {
     ...           
 });

我已经开始使用自己的数据属性来连接自动完成和日期选择器等功能。例如,添加一个带有指向远程数据源的 data-autocomplete 属性的输入,然后使用 jQuery 以不显眼的方式将其连接起来。

$(":input[data-autocomplete]").each(function () {
        $(this).autocomplete({ source: $(this).attr("data-autocomplete") });
    });

此处演示,如果您有兴趣: 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:

 $("a[data-ajax=true]").live("click", function (evt) {
        evt.preventDefault();
        ...
 });

 $("form[data-ajax=true]").live("submit", function (evt) {
     ...           
 });

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.

$(":input[data-autocomplete]").each(function () {
        $(this).autocomplete({ source: $(this).attr("data-autocomplete") });
    });

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文