让 我 从 解释 我 尝试 过 的 所有 可能 的 解决 方案 开始 。 我 现在 在 我 的 脚本 文件 夹 中 有 jquery-unobtrusive-ajax.min.js
, 并且 已经 把 它 添加 到 一 个 包 中 。 我 试 着 在 视图 页面 本身 引用 它 , 还有 _Layout.cshtml
页面 , 这 就是 我 现在 拥有 包 的 方式 :
//BundleConfig.cs
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-1.10.2.min.js",
"~/Scripts/modernizr-2.6.2.js",
"~/Scripts/jquery.validate.min.js",
"~/Scripts/jquery.unobtrusive-ajax.min.js"));
中 的 每 一 个
此 包 在 主 布局 视图 页面 中 引用 , 所有 其他 视图 都 是 从 该 页面 派生 的 :
//_Layout.cshtml (at bottom of view, right before hitting </body></html>)
@Scripts.Render("~/bundles/jquery")
格式
最 后 , 在 web.config 中 , 我 将 这些 键 添加 到 应用 程序 设置 中 :
//Web.config
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
格式
既然 已经 说明 了 这 一 点 , 下面 就是 我 的 Ajax 调用 。 我 尝试 从 一 个 独立 页面 返回 一些 数据 , 并 将 其 替换 为 主页 中 的 数据 , 我 认为 这 相当 简单 :
@Ajax.ActionLink("Edit", "Index", "WeeklyTarget",
new {id = item.WeeklyTargetId},
new AjaxOptions {HttpMethod = "GET", UpdateTargetId = "hoursEdit", InsertionMode = InsertionMode.Replace})
格式
从 索引 视图 中 单击 此 操作 链接 时 , 将 从 控制 器 中 调用 此 操作 :
public ActionResult Index(int? id, IEnumerable<WeeklyTarget> selection )
{
if (Request.IsAjaxRequest())
{
// return the partial view here
}
}
格式
但是 正如 我 的 标题 中 所说 的 , Request.IsAjaxRequest()
仍然 总是 返回 false 。 为什么 ? ? ? 请 帮助 ... 我 已经 用尽 了 所有 的 想法 , 调整 , 和 工作 区 , 我 可能 会 想到 的 。 我 甚至 尝试 清除 我 的 缓存 , 清理 解决 方案 , 等等 。
3条答案
按热度按时间ia2d9nvy1#
所以......问题是
jquery-unobtrusive-ajax.min.js
引用了jQuery方法.live()
。当我调试时,chrome的开发者控制台抛出了一个错误。只有当你使用jQuery 1.9以后的版本时才会发生这种情况(我使用的是1.10.2)。它在1.7中被弃用,但在1.9中被完全删除。解决方案是添加另一个jquery库
jquery-migrate-1.2.1.js
,可在此处找到:https://github.com/jquery/jquery-migrate#readme,更具体地说(用于开发,而非生产),请访问:http://code.jquery.com/jquery-migrate-1.2.1.js。我保存了这个库并将其包含在我的BundleConfig.cs
脚本中,其余的部分开始按预期工作。我希望这将对其他人有所帮助。vatpfxk52#
问题是 AJAX 请求不能与miscrosoft helper方法完全同步,比如IsAjaxRequest()。当你在你的库中缺少- jquery.unobtrusive-ajax.min.js时,就会出现这种情况。你可以安装它:
1.开放式Nuget数据包管理器
1.运行命令安装包Microsoft.jQuery.Unobtrusive. AJAX
原始信息可以在这里找到:https://www.devexpress.com/Support/Center/Question/Details/Q508048
祝你这个夏天阳光充足
sh7euo9m3#
如果使用AngularJs和$resource,则可能需要添加以下内容
请参阅this link