Jquery MVC3中的Ajax.ActionLink似乎与HTML.ActionLink的作用相同
我有一个ASP.NETMVC页面,我想使用AJAX更新用户正在表单上编辑/查看的父表的子表。我相信这是一个非常标准的模式,但因为我是这个平台的新手 在我的页面中,我有以下内容:Jquery MVC3中的Ajax.ActionLink似乎与HTML.ActionLink的作用相同,jquery,ajax,asp.net-mvc,asp.net-mvc-3,Jquery,Ajax,Asp.net Mvc,Asp.net Mvc 3,我有一个ASP.NETMVC页面,我想使用AJAX更新用户正在表单上编辑/查看的父表的子表。我相信这是一个非常标准的模式,但因为我是这个平台的新手 在我的页面中,我有以下内容: <ul id="see_also_list"> <!-- this part is in a partial --> @if (0 < Model.RelatedCategories.Count) { foreach (string cat in Mo
<ul id="see_also_list">
<!-- this part is in a partial -->
@if (0 < Model.RelatedCategories.Count)
{
foreach (string cat in Model.RelatedCategories.Keys)
{
<li>@Html.ActionLink(cat, "Details", new { id = Model.RelatedCategories[cat] })
[@Ajax.ActionLink("remove", "RemoveSeeAlso", new { id=Model.Id, RelatedCategory = Model.RelatedCategories[cat] }, new AjaxOptions{ Confirm = "This will remove this item", HttpMethod = "POST", UpdateTargetId = "see_also_list" })]</li>
}
}
else
{
<li>No related Categories listed.</li>
}
<!-- end of partial -->
</ul>
@using (Ajax.BeginForm("AddSeeAlso", new AjaxOptions { UpdateTargetId = "see_also_list", InsertionMode = InsertionMode.Replace }))
{
@Html.HiddenFor(model => model.Id)
@Html.DropDownList("alsoCategories", Model.LoadCategoryDropdown())
<input type="submit" value="Add" />
}
@if(0@ActionLink(cat,“细节”,新的{id=Model.RelatedCategories[cat]})
[@Ajax.ActionLink(“remove”,“removeseeal”,new{id=Model.id,RelatedCategory=Model.RelatedCategories[cat]},new-AjaxOptions{Confirm=“这将删除此项”,HttpMethod=“POST”,UpdateTargetId=“参见列表”})]
}
}
其他的
{
- 未列出相关类别
}
@使用(Ajax.beginnform(“addseealls”,新的AjaxOptions{UpdateTargetId=“see_-allow_-list”,InsertionMode=InsertionMode.Replace}))
{
@Html.HiddenFor(model=>model.Id)
@DropDownList(“alsoCategories”,Model.LoadCategorHydropdown())
}
我遇到的问题是,Ajax表单和Ajax.ActionLink的行为方式似乎与HTML.ActionLink的行为方式相同——它们直接将浏览器导航到表单上的操作。当“确认”AjaxOption的链接启用时,它不会显示任何类型的确认框。我想我缺少了一些关键的管道,这需要工作,或者内置的helper方法没有像我希望的那样有帮助,我需要手动添加一些额外的JavaScript
由Ajax.ActionLink创建的HTML如下所示:
<ul id="see_also_list">
<li><a href="/Category/Details/2">Advice and Information </a>
[<a data-ajax="true" data-ajax-confirm="This will remove this item" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#see_also_list" href="/Category/RemoveSeeAlso/1?RelatedCategory=2">remove</a>]</li>
</ul>
-
[]
包括“jquery.validate.min.js”、“jquery.validate.unobtrusive.min.js”、“MicrosoftAjax.debug.js”和“MicrosoftMVCAjax.debug.js” 我认为您缺少到jquery unobtrusive库的链接(通常在您的_布局页面中链接)
没有这一点,就没有人能够完美地处理
数据ajax
和其他ajax相关属性,这正是问题所在。
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>