Jquery MVC3中的Ajax.ActionLink似乎与HTML.ActionLink的作用相同

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

我有一个ASP.NETMVC页面,我想使用AJAX更新用户正在表单上编辑/查看的父表的子表。我相信这是一个非常标准的模式,但因为我是这个平台的新手

在我的页面中,我有以下内容:

  <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>