在asp.net中使用Ajax加载PartialView
我在使用PartialView和Ajax时遇到问题。我使用custim助手创建带有Ajax属性的Imagelink(在internet上找到) 问题是,当我单击图像时,它会在targetDiv中呈现相同的页面,而不是他应该加载的PartialView 这是我的密码: 视图中的更新函数 Create函数 Create.ascx(不在共享中)在asp.net中使用Ajax加载PartialView,ajax,asp.net-mvc-2,partial-views,Ajax,Asp.net Mvc 2,Partial Views,我在使用PartialView和Ajax时遇到问题。我使用custim助手创建带有Ajax属性的Imagelink(在internet上找到) 问题是,当我单击图像时,它会在targetDiv中呈现相同的页面,而不是他应该加载的PartialView 这是我的密码: 视图中的更新函数 Create函数 Create.ascx(不在共享中) m、 Link.Url)%> m、 Link.Url)%> m、 Link.Url)%> m、 链接.说明)%> m、 链接.说明)%> m、 链接.说明)
m、 Link.Url)%>
m、 Link.Url)%>
m、 Link.Url)%>
m、 链接.说明)%>
m、 链接.说明)%>
m、 链接.说明)%>
请帮帮我,我已经找了几个小时的好办法了您可能还需要参考
MicrosoftAjax.js
:
<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
现在,您可以删除
updateTarget
函数,因为它不是必需的。更新可以在不成功的情况下工作,但我仍然没有获得PartialView Create.ascx,而是在targetDiv中插入了相同的页面。@Myst3ric,当您使用FireBug调试AJAX时,服务器会发送什么作为响应?它发送的是部分HTML还是整个页面?FireBug说data.get_updateTargetGet()不是函数。我在更新视图的函数中使用它
<tr>
<td><div id="create"></div></td>
<td></td>
<td></td>
</tr>
<% if (10 < 20) {%>
<tr>
<td><%= Ajax.ImageActionLink("/Content/Images/add_link.png","Add a new link", "Create", new AjaxOptions() { OnSuccess = "updateTarget", UpdateTargetId = "create" })%></td>
<td></td>
<td></td>
</tr>
<% } %>
public static string ImageActionLink(this AjaxHelper helper, string imageUrl, string altText, string actionName, AjaxOptions ajaxOptions)
{
//Creates the image
var builder = new TagBuilder("img");
builder.MergeAttribute("src", imageUrl);
builder.MergeAttribute("alt", altText);
builder.MergeAttribute("height", "24");
builder.MergeAttribute("width", "24");
//Creates the link
var link = helper.ActionLink("[replaceme]", actionName, ajaxOptions);
return link.ToString().Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing));
}
public ActionResult Create()
{
return PartialView("Create");
}
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyLinks.ViewModels.LinkViewModel>" %>
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm()) {%>
<div class="editor-label">
<%: Html.LabelFor(m => m.Link.Url) %>
</div>
<div class="editor-field">
<%: Html.TextAreaFor(m => m.Link.Url) %>
<%: Html.ValidationMessageFor(m => m.Link.Url) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(m => m.Link.Description) %>
</div>
<div class="editor-field">
<%: Html.TextAreaFor(m => m.Link.Description)%>
<%: Html.ValidationMessageFor(m => m.Link.Description)%>
</div>
<a href="javascript:document.form_name.submit();"><img src="/Content/Images/confirm_link.png" alt="Accept this link"/></a>
<% } %>
<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
<%= Ajax.ImageActionLink(
Url.Content("~/Content/Images/add_link.png"),
"Add a new link",
"Create",
new AjaxOptions {
UpdateTargetId = "create",
InsertionMode = InsertionMode.InsertAfter
}
) %>