Ajax.ActionLink в MVC3, похоже, действует так же, как HTML.ActionLink - PullRequest
1 голос
/ 27 февраля 2012

У меня есть страница ASP.Net MVC, на которой я хочу использовать 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" />
  }

У меня проблема в том, что обаФорма Ajax и Ajax.ActionLink, похоже, ведут себя так же, как HTML.ActionLink - они перемещаются в браузере прямо к действию в форме.Когда включена ссылка на «Подтвердить» AjaxOption, он не отображает никаких подтверждений.Я предполагаю, что мне не хватает некоторой критической части сантехники, необходимой для этого, или что встроенные вспомогательные методы не помогают так сильно, как я надеялся, и мне нужно добавить немного дополнительного JavaScript вручную.

HTML, созданный Ajax.ActionLink, выглядит следующим образом:

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

1 Ответ

2 голосов
/ 27 февраля 2012

Я думаю, вам не хватает ссылки на ненавязчивую библиотеку jquery (обычно на вашей странице _Layout)

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

Без этого никто не будет обрабатывать data-ajax и другие атрибуты, связанные с ajax

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...