asp.net-mvc - 使用 Ajax.ActionLink() 进行优雅降级,无法使其工作,请检查我的语法。 (MVC3)

标签 asp.net-mvc asp.net-mvc-3 jquery asp.net-ajax

我已经通过 Url.Action 指定了用于异步请求的 Action 方法,但与为表单指定 ajax 选项并存储它们不同,即

 AjaxOptions ajaxOpts = new AjaxOptions {
UpdateTargetId = "tabledata",
Url = Url.Action("AppointmentData")
};

不仅仅是将此“ajaxOpts”传递到 Ajax.BeginForm() 中,我无法将 ajax 选项存储在变量中,然后将其传递到 Ajax.ActionLink 中。请参阅下面我尝试的语法:

@Ajax.ActionLink(cat.CATNAME, ajaxOpts, new { CatID = cat.CATID, count = Model.Count },
AjaxOptions ajaxOpts = new AjaxOptions
{
    UpdateTargetId = "catlist-" + Model.Count,
    Url = Url.Action("GetCats")

})

虽然像下面这样的东西在不尝试使用优雅降级的情况下当然可以正常工作,但是当 jscript 关闭时,它只会发出部分 View ,而不会发出页面的其余部分:

@Ajax.ActionLink(cat.CATNAME, "GetCats", new { CatID = cat.CATID, count = Model.Count },
new AjaxOptions
{
    UpdateTargetId = "catlist-" + Model.Count,  
})

这是可以理解的,当您不指定表单的 URL 而只是使用 AjaxOptions 作为参数并且关闭 jscript 时,表单将默认回发到呈现页面的 Action。但是 ActionLink 是否可以实现类似的功能呢?

最佳答案

这是因为您需要不同的操作和/或检查 Controller 操作方法的 AJAX 发布。当您打开 javascript 时,您正在请求部分 View 并告诉 javascript 使用该部分 View 更新哪个目标(div 或 span 或其他)。当 javascript 关闭时,听起来您仍然只返回部分 View ,而不是完整 View 。由于 javascript 已关闭,因此您不会更新 div - 只是自行渲染部分。

简而言之,当它不是 AJAX 请求(JS 关闭)时,您需要让操作方法返回完整 View ,因为如果没有打开 javascript,您将无法更新页面的一部分。

关于asp.net-mvc - 使用 Ajax.ActionLink() 进行优雅降级,无法使其工作,请检查我的语法。 (MVC3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7609250/

相关文章:

asp.net - IPrincipal 或 Membership 来检索用户名

c# - MongoDB 更新失败且没有错误

表单中的 jQuery 对话框按钮导致 POST

c# - 是否可以在 ASP.NET MVC 中将命名空间分组到一个文件中?

c# - 是否可以将 DataAnnotations 与接口(interface)继承一起使用?

javascript - JQuery - 将类添加到元素上,然后与该类交互不起作用

asp.net-mvc - ASP MVC HTML 表单 POST List<Entity>

javascript - Flexslider 轮播自定义导航 - 同一页面上有多个

javascript - 替换对数据属性值不起作用

asp.net-mvc - Entity Framework 中的 SaveChanges 会包装数据库事务中的所有更改