2010-06-21 74 views
1

我在使用AJAX操作鏈接時遇到了一些麻煩。每當單擊鏈接時,UpdateTargetID容器不會更新,除非鏈接被單擊兩次(由於該項目已被刪除;在此異常之後,頁面將更新,因此會在第二次單擊時拋出異常)。MVC AJAX操作鏈接沒有正確更新

此外,在第一次更新時,整個頁面被重新加載到自身中,有點像iframe。我有一個簡單的3列布局(標題,左側菜單,右側內容),整個網頁被重新渲染到正確的內容部分。但只有一次。後續操作鏈接點擊不會遞歸地呈現頁面本身。

我使用的AJAX圖像鏈接下面的代碼(在這裏找到:ASP.NET MVC Ajax.ActionLink with Image):

public static class ImageActionLinkHelper 
{ 
    public static string ImageActionLink(this AjaxHelper helper, string imageUrl, string altText, string actionName, object routeValues, AjaxOptions ajaxOptions) 
    { 
     var builder = new TagBuilder("img"); 
     builder.MergeAttribute("src", imageUrl); 
     builder.MergeAttribute("alt", altText); 
     var link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions); 
     return link.ToString().Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing)); 
    } 
} 

這是在我的.aspx操作鏈接:

<%= Ajax.ImageActionLink("../../content/imgs/delete_icon.png", "Delete error", "Delete", new { id = new Guid(item.ErrorId.ToString()) }, new AjaxOptions { Confirm = "Delete?", UpdateTargetId="errors" }) %> 

「錯誤」 時我的ID更新

 [HttpPost] 
     public ActionResult Delete(Guid id) 
    { 
     var error = db.ELMAH_Error.FirstOrDefault(x => x.ErrorId == id); 

     db.DeleteObject(error); 
     db.SaveChanges(); 

     return PartialView(); 
    } 

回答

0

您似乎在渲染整個視圖。因此,會產生無效的標記 - 重複的主體標籤等。在處理Ajax場景時使用部分視圖。

+0

謝謝,看着執行partials。這確實解決了重複問題(現在在控制器中使用返回PartialView()而不是RedirectToAction),但是頁面不會異步更新。刪除確實是異步發生的,不過,它只是沒有直觀的反映。有關於此的任何想法? – bowlingforfish 2010-06-21 19:09:30