Как обновить часть просмотра при изменении тега select - PullRequest
1 голос
/ 13 ноября 2009

Использование ASP.Net MVC 1.0 У меня есть форма с некоторыми элементами управления вводом. Одним из них является раскрывающийся список (выберите). Когда этот выпадающий список изменяется пользователем, мне нравится обновлять DIV-тег с помощью RenderPartial () или что-то вроде этого

Мой взгляд сейчас выглядит так:

<% using (var form = Html.BeginForm())
   { %>
       <label for="FieldIdentifier">Identifier:</label>
       <%=Html.TextBox("FieldIdentifier", Model.FieldIdentifier)%>
       ...

       <label for="DataType">DataType:</label>
       <%=Html.DropDownList("DataType", Model.AvailableDataTypes)%>

       <div id="DataTypeOptions">
          <% Html.RenderPartial("FieldDataTypeOptions", Model); %>
       </div>
       ...

В Webforms функциональность, которую я ищу, может быть выполнена с помощью UpdatePanel вокруг выпадающего списка и DIV. Может ли здесь помочь Ajax.BeginForm () или нужен JScript для клиентского события OnChange? Если да, то как можно обновить DIV-часть представления с помощью JScript?

Любая помощь будет отличной!

Ура, Marc

1 Ответ

2 голосов
/ 13 ноября 2009

Если вы хотите обновить DIV на основе изменения в раскрывающемся списке, то вам потребуется действие на контроллере, которое может вернуть только правильное частичное представление на основе значения раскрывающегося списка. Я бы предложил использовать jQuery, чтобы добавить обработчик изменений для раскрывающегося списка, и вызвать действие, чтобы получить частичное с помощью загрузки jQuery.

$(function() {
    $("#DataType").change( function() {
        $("#DataTypeOptions").load( '<%= Url.Action( "GetDataTypeOptions" ) %>?dataType=' + $(this).val() );
    });
});

(обратите внимание на изменение имени div - я думаю, что у вас есть опечатка)

, где у вас есть действие на том же контроллере, что и

public ActionResult GetDataTypeOptions( string dataType )
{
    var model = ... uses dataType to get model ...

    return Partial( "FieldDataTypeOptions", model );
}

Если вашему методу "Get" требуется больше входных данных, просто добавьте параметры в метод и создайте параметры в вызове загрузки из значений дополнительных элементов ввода.

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