问题标签 [unobtrusive-ajax]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1055 浏览

jquery - ajax.beginform 和 unobtrusive-ajax.js 用于部分刷新的替代方案是什么?

我在我的应用程序的各个地方都使用了 Ajax.Beginform 和 unobtrusive-ajax.js。在我使用 JQuery 1.7 库之前,这一切都很好。但是,在将它们升级到 JQuery 1.9.0 后,这停止了工作,我还升级了 unobtrusive-ajax 的版本(以便用 .on() 方法替换 .live ),但它仍然不起作用。

最近,我看到一些帖子暗示 Ajax.Beginform 和 unobtrusive-ajax 不是正确的方法。在这种情况下,进行部分刷新的最佳方法是什么。说,我的视图有“搜索”按钮,当用户单击“搜索”时,它应该只刷新页面的特定部分。我们如何在不使用 Ajax Form 和 unobtrusive-ajax.js 的情况下实现它?

0 投票
1 回答
198 浏览

ajax - 结果未在 mvc 3 中使用不显眼的 ajax 显示

我正在尝试使用 mvc 3 的不显眼的 ajax 来实现一个小 ajax。这是代码片段:

控制器:

看法:

我调试了代码,它将员工 ID 发送到 ViewEmployee 方法,找到了名称但无法将名称显示回视图中。

我已经在 web.config 中激活了不显眼的 ajax 属性并将脚本导入到视图中。

这有什么问题?请帮忙。

0 投票
1 回答
6656 浏览

asp.net-mvc-4 - ASP MVC 4 Ajax.ActionLink 使用 AntiForgeryToken 进行删除

我有许多索引页面,其中行有一个像这样的操作链接

操作链接是使用渐进增强的好方法,因为当然还有一个删除操作,使用 get 和 post 方法为禁用 javascript 的用户执行删除操作。

我需要添加一个 AntiForgeryToken。对于 Ajax.BeginForm 助手,Jon White 的代码运行良好:

当这在 actionlink 中执行时,我假设因为索引表未包装在表单中,我收到错误消息:

所以我可以将整个表包装在一个表单中,然后返回到删除操作,但是如果我想使用其他 ajax.actionlinks 到表中的不同操作,这不是很整洁。我可以用自己的形式包装每个动作链接,每个动作链接都有自己的防伪标记,但这是大量的额外标记,并且会在页面上留下数十个具有相同值和名称的元素。另一种选择是使用 ActionLink OnBegin 方法将按钮包装在表单中,但不显眼的 ajax 库似乎没有传递对导致 ajax get/post 的元素的任何引用(在我看来很愚蠢 - 你可以对此表示赞同codeplex上的问题)。

对简洁的解决方案有任何想法吗?谢谢你。

0 投票
1 回答
3732 浏览

asp.net-mvc-4 - 简单的 MVC4 不显眼的 ajax 不起作用

我正在编写一个非常简单的 MVC4 测试页面,并且不显眼的 Ajax 似乎无法正常工作。当我单击我的提交按钮时,该页面未提交。

我有一个断点是 VS,可以判断没有请求。

我正在使用 Firefox,当我单击提交按钮时,Web 控制台显示此 JavaScript 错误:
--- 传递给 getElementById() 的空字符串

这发生在第 16 行
。--- jquery.unobtrusive-ajax.js



我设置 ajax 选项如下:

这是我的 AjaxForm:

当我单击提交按钮(在 ajax 选项中定义)时,我确实得到了“你确定提示”。


如果我将 Ajax.BeginForm 更改为:

然后有一个请求,我的断点被命中,并且没有 JS 错误。


我使用 NuGet 来获取 jQuery 和 unobtrusive-ajax 的最新版本。这是来自视图源的我的脚本标签(所有这些标签 - 按顺序):




这是呈现的形式:




有任何想法吗?

0 投票
1 回答
286 浏览

jquery - 为什么 jquery 和 ajax 不显眼地向服务器发送多个 Post

我对 jquery 和 Microsoft Unobtrusive 库有一点问题。

我创建了一个包含许多 PartialViews 的视图,并且在一个 Partial 中,一个按钮显示一个弹出窗口,当我在弹出窗口中提交时,它会向服务器发送多个 POST。

这是我的代码:

主视图

弹出窗口的部分视图

0 投票
1 回答
1673 浏览

asp.net-mvc-4 - 不显眼的 ajax 表单防止取消按钮发布

问题:为什么取消按钮像提交一样发布到控制器?

我从局部视图加载了下面的表单。提交工作正常。我一直在努力解决的唯一问题是为什么 Cancel 不只是关闭表单。我尝试了很多方法,比如捕获点击事件。我查看了http://jimmylarkin.net/post/2012/05/16/Broken-Validation-on-Cancel-Buttons-With-Unobtrusive-Validation-Ajax.aspx作为一种可能的解决方案,但我不确定这是它打算解决的问题。毫无疑问,这是我的一些无知。那么我错过了什么愚蠢的东西?

0 投票
1 回答
895 浏览

asp.net-mvc - 不显眼的 ajax 事件中的表单元素访问

我想为使用不显眼的 ajax 的特定表单挂钩 ajax 回调。使用不显眼的 ajax 的这种标准形式的 ajax 调用没有问题:

我的第一种方法是:

但这似乎不起作用。这种方法会命中处理程序,但不仅仅是针对所需的形式。但是对于所有 ajaxComplete 事件。

下一个选项是使用“data-ajax-success”。但这似乎并没有提供表单上下文。

所以问题是:我如何只为一种形式专门连接一个 ajaxComplete 事件。

注意: 我想避免像匹配 url 或向查询中添加一些唯一 id 之类的解决方法。

谢谢!

0 投票
1 回答
956 浏览

ajax - MVC不显眼的AJAX,返回Json数据,和IE

因此,关于整个“IE为通过Ajax返回的Json数据打开下载文件对话框”(例如this onethis one)存在很多问题,但是对于使用Unobtrusive Ajax的人,我没有找到任何答案。

我们像这样做一个简单的 Ajax.BeginForm:

这将发布内容类型为“application/x-www-form-urlencoded; charset=UTF-8”的表单。控制器处理表单,如果出现错误,它会返回一个内容类型为“text/html”的 PartialView,并且该 HTML 被放入 ContentContainer(因为 AjaxOptions 中的“UpdateTargetId”属性)。

如果没有错误,并且用户成功登录,它会返回 Json 以及他们应该重定向到的 URL。所以在Controller中,就这么简单:

除了我们刚刚有一个用户通知我们在 IE8 中,这会导致下载对话框弹出。在阅读了具有相同问题的所有其他问题之后,我明白为什么会发生这种情况,但是针对这些情况的解决方法是改用这个 Json 返回:

问题是当我这样返回时,我猜 Unobtrusive Ajax 看到来自服务器的响应是 HTML,它会替换 UpdateTargetId 容器中的内容。当服务器以“application/json”响应时,它不会这样做。

有没有办法解决?

(我需要进一步解释吗?)

0 投票
2 回答
981 浏览

jquery - 根据 IE 版本加载不同的脚本版本

我有一个 asp.net mvc 4 Web 应用程序,它必须与 IE 7 到 IE 10 兼容,然后根据使用的 IE,我的某些脚本版本(jquery 等)有问题,所以在我的根脚本文件夹下,我创建了一个名为 OlderIE 的新文件夹。使用 IE 7 时,我希望加载 OlderIE 文件夹中的脚本。当使用 IE > 7 时,我希望加载 Scripts 根文件夹中的脚本。那么如何做到这一点呢?

与此相关,是否可以在我的 asp.net mvc 4 项目中安装不同版本的脚本(jQuery、jQuery unobtrusive 等)并根据 IE 版本使用它们?

更新:我想要这个,因为我在使用 IE >= 8 时使用 jquery-1.9.1 及其所有依赖项,但它在 IE 7 中不起作用。所以当使用 IE 7 时,我使用 jquery-1.6.4 及其依赖项(jquery不显眼等)。所以我想知道如何做到这一点。是否可以在同一个项目中安装多个版本的 jquery、jquery unobtrusive 等?如果是这样,如何执行此操作以及如何根据所使用的 IE 加载正确的?

0 投票
0 回答
226 浏览

c# - 使用 MVC 3、C# 和 unobtrusive-ajax 防止用户使用浏览器的向后和向前功能

问题:阻止用户使用浏览器的向后和向前功能。

使用:MVC 3 C# Microsoft Visual Studio 2010 .net framework 4.0 unobtrusive-ajax

我有一个使用 Html.BeginForm 和朋友以普通的书外方式使用 MVC3 应用程序,控制器方法将不同的模型对象作为参数等等。一切正常,除了用户能够通过使用浏览器的向后和向前导航可能性来阻碍预期的功能流程。最重要的是,这在这个特定的应用程序中是不可能的。

到目前为止,我已经通过使用自制的 FSM(有限状态机)“解决”了这个问题,该 FSM 拦截尝试选择与用户状态不兼容的操作,方法是将她发送回应用程序的开头,并显示她的消息无法使用浏览器导航。这真的不是很用户友好:-)

我现在正在尝试使用 unobtrusive-ajax 来解决我的问题(Ajax.BeginForm)。一切正常,直到我尝试像使用 Html.BeginForm 一样来回转换模型数据。我还使用 view/viewmodel/CustomValidation 围绕模型和服务器端验证有很多现有的程序代码,我想将其保留在可能的 Ajax 解决方案变体中。

这个开始的计划很好地工作(细节被剥离):

CommandDispatcher.cshtml 查看:

SomeAction001.cshtml 局部视图:

SomeAction002.cshtml 局部视图:

控制器:

为了让这个场景也使用其中的数据:-),我需要添加模型渲染和验证功能。

将模型发送到浏览器是没有问题的,例如在局部视图中添加以下内容:@Html.Raw((model as MyViewModel).Field1)它按希望和预期的方式呈现。我认为的问题是从浏览器到控制器的方向。

如何引入这样的功能?