【问题标题】:How to make @Ajax.ActionLink not update如何使@Ajax.ActionLink 不更新
【发布时间】:2015-05-16 14:35:30
【问题描述】:

有没有办法让@Ajax.ActionLink() 不更新UpdateTargetId? 例如,像这样:

@Ajax.ActionLink("All", "Get_Books_By_Id", new { ID = 0 }, 
    new AjaxOptions() { 
        HttpMethod = "GET", 
        UpdateTargetId = "div_records", 
        InsertionMode = InsertionMode.Replace, 
        LoadingElementId = "div_load" 
    }
)

Get_Books_By_Id 正在返回 PartialView 以及 PartialView 中的表数据,但我不想在数据(列表)计数为 0 时更新 UpdateTargetId

有什么方法可以通过控制发送一些告诉 ajax 不要更新的东西吗?或者有没有其他办法?

【问题讨论】:

  • 在 ajax 调用之前发布您的部分视图以及 div 中的内容。
  • 已经通过使onsuccess javascript函数在某些条件下更新或不更新来完成。感谢您的帮助
  • 你已经做了什么?我要求您在此处发布您的部分观点和主要观点。

标签: ajax asp.net-mvc asp.net-mvc-5


【解决方案1】:

您可以通过两种方式做到这一点:

  1. 删除更新目标 id 并改为使用 OnSuccess 处理程序

    function onSuccess(result){
         var fragment = $(result);
         if(fragment.find("tr").length >= 0)        
             $("div_records").html(fragment)
     }
    
  2. 更改您的控制器以从您的操作返回不同的状态代码

    public ActionResult Get_books_by_id()
    {
           var myBooks = _repostiory.GetBooksById();
           if(!myBooks.Any())
                return new HttpStatusCodeResult(HttpStatusCode.NotFound);
    
           return PartialView("mybooks", myBooks);
     }
    

我以前使用过这两种方法,显然您需要根据您的用例定制选择和操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 2020-09-23
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    相关资源
    最近更新 更多