Событие DropDown onchange и AJAX в MVC - PullRequest
3 голосов
/ 10 февраля 2010

В моем представлении MVC черный код выглядит следующим образом:

<%using (Ajax.BeginForm("MyAction", new { action = "MyAction", controller = "Home", id = ViewData["selected"].ToString() }, new AjaxOptions { UpdateTargetId = "Div1" }))
     { %>
          <%=Html.DropDownList("ddl", ViewData["MyList"] as SelectList, new { onchange = "this.form.submit()" })%>
                 <%} %>

Я хочу установить значение ViewData ["selected"], чтобы я мог отправить его на нужное действие. Кто-нибудь может подсказать, как мне это сделать?

спасибо!

Ответы [ 3 ]

11 голосов
/ 10 февраля 2010

Вместо использования формы, почему бы не использовать событие jQuery onChange в раскрывающемся списке?

$(document).ready(function() {
    $("#ddl").change(function() {
        var strSelected = "";
        $("#ddl option:selected").each(function() {
            strSelected += $(this)[0].value;
        });
        var url = "/Home/MyAction/" + strSelected;

        $.post(url, function(data) {
            // do something if necessary
        });
    });
});
2 голосов
/ 10 февраля 2010

ViewData не место для передачи данных обратно на сторону сервера. Значения элементов управления вводом html в теге формы удобно доступны в методе действия. Вы можете получить эти значения либо из различных типов аргументов метода действия (модель, форма коллекции и т. Д.).

Вот ссылка на бесплатное учебное пособие по mpc asp.net . Является хорошим ресурсом для asp.net mvc.

0 голосов
/ 28 апреля 2016

Нашли решение на этом посту это просто маленький чхн

Да, все верно - только замена заменяет:

onchange = «this.form.submit ();»

с:

onchange = «$ (this.form) .submit ();»

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