Html.DropDownList с вызовом Ajax для заполнения частичного представления - PullRequest
0 голосов
/ 04 ноября 2010

У меня есть выпадающий список на моей странице: (результат - div)

  <% 
    using (Ajax.BeginForm("MembersByClubSearch", new AjaxOptions { UpdateTargetId = "results" }))
    { 
      %>
      <%= Html.DropDownList("ddlClubs", new SelectList(Model.ClubNameList, "ClubID", "ClubName"), new { onchange = "this.form.submit();" })%>
      <%
    }
  %>

Мое действие -

public ActionResult MembersByClubSearch(string query)
    {
members = ... // code to get the List<> of members

      if (Request.IsAjaxRequest())
      {
        return View("MembersByClubSearchResultUserControl", members);
      }
      else
      {
        return View(members);
      }
    }

Но отправка моего выпадающего списка не является AjaxRequest.Когда я использую кнопку отправки, она работает нормально, но я хочу отправить, когда пользователь меняет раскрывающийся список вместо изменения раскрывающегося списка И нажимает кнопку.

Есть идеи?

спасибо,

Филип

Ответы [ 2 ]

2 голосов
/ 04 ноября 2010

Я бы порекомендовал вам избавиться от MSAjax и использовать jquery вместе с плагином form :

<% using (Html.BeginForm("MembersByClubSearch", "Home")) { %>
    <%= Html.DropDownListFor(
        x => x.SelectedClubId, 
        new SelectList(Model.ClubNameList, "ClubID", "ClubName"), 
        new { id = "club" }
    ) %>
<% } %>

И в отдельном js-файле:

$(function() {
    // Ajaxify the form => this is for normal submit
    $('form').ajaxForm(function(result) {
        $('#results').html(result);
    });

    // When the value of the dropdown changes force an ajax submit
    $('#club').change(function() {
        $('form').ajaxSubmit();
    });
});
0 голосов
/ 04 ноября 2010

Это потому, что функция javascript this.form.submit(); выполняет традиционный HTTP POST для вашей формы.Вместо этого вам нужно отправить POST в стиле AJAX на контроллер, чтобы вызвать оператор if (Request.IsAjaxRequest()).

Я бы использовал JQuery и функцию $ .post (), которая позволяет вам указать функцию обратного вызоваобновить частичное представление.

Вот хороший пример, который может вам помочь: Dynamic-Select-Lists-with-MVC-and-jQuery

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