我在使用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();
}
答案 0 :(得分:0)
您似乎正在渲染整个视图。因此,将生成无效标记 - 复制正文标记等。在处理Ajax方案时使用部分视图。