MVC AJAX操作链接无法正确更新

时间:2010-06-21 16:29:57

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

我在使用AJAX操作链接时遇到了一些麻烦。每当点击一个链接时,UpdateTargetID容器不会更新,除非点击两次链接(这会在第二次点击时抛出异常,因为该项已被删除;在此异常后,页面更新)。

此外,在第一次更新时,整个页面会重新加载到自身,有点像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" }) %>

“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();
    }

1 个答案:

答案 0 :(得分:0)

您似乎正在渲染整个视图。因此,将生成无效标记 - 复制正文标记等。在处理Ajax方案时使用部分视图。