MVC 4 @HTML.DropdownlistFor onchange событие должно отправить значение SelectedIndex

Я использую MVC 4 и имею @HTML.DropdownlistFor (), который загружает остальную часть страницы на основе его выбора. При изменении списка я хочу перезагрузить страницу, чтобы она загрузила правильные данные. Также есть два других параметра, которые необходимы для правильной загрузки страницы.

В Create.просмотр cshtml

@Html.DropDownListFor(model => model.SelectedMissionID,    Model.MissionsToDisplay, new { onchange = "ReloadPage();" })

function ReloadPage() {
  window.location = '@Html.Raw(Url.Action("CreateEdit", "DailyLog", new { ID = 1, ID2 = 0, dailyLogDate = Model.LogDate }))';

}

Где он говорит ID = 1, я хочу выбранный индекс DropdownlistFor (SelectedMissionID), как это получить?

Я не уверен, что это лучший способ перейти к контроллеру, или если я должен использовать JQUERY .ajax post, есть ли лучший способ?

1 ответ

  1. I seems something ideal for an ajax post.
    То, что вы сделали, в порядке, внутри функции ReloadPage() просто получите выбранное значение в раскрывающемся списке, выполните вызов Ajax, передающий параметры, и в успешном обратном вызове поместите возвращенный HTML в какой-то контейнер.

    Идея заключается в том, что вы заменяете часть своего представления на возврат вызова Ajax, а не всю страницу.

    Чтобы получить выбранное значение, используйте jQuery:

    var selectedValue = $("select[name='SelectedMissionID']").val();
    

    И это можно поместить в функцию ReloadPage ().

        $.post( "your action URL", { ID: selectedValue, OtherParam: "xxxxx" })
          .done(function( data ) {
            alert( "Data Loaded: " + data );
    //here you need to get the HTML, and put in a container
          });