ASP.NET MVC - PartialView не обновляется - PullRequest
0 голосов
/ 16 февраля 2010

У меня есть пользовательский элемент управления: VendorDDL.ascx со следующим кодом:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<MeetingCalendar.Models.Vendor>>" %>

<table>
    <tr>
        <th></th>
        <th>
            VendorId
        </th>
        <th>
            VendorName
        </th>
    </tr>

<% foreach (var item in Model) { %>

    <tr>
        <td></td>
        <td>
            <%= Html.Encode(item.VendorId) %>
        </td>
        <td>
            <%= Html.Encode(item.VendorName) %>
        </td>
    </tr>

<% } %>

</table>

Мое представление: Create.aspx, имеет следующий фрагмент кода:

<p>
            <label for="VendorNameSearch">Vendor Name:</label>
            <input type="text" name="VendorNameSearch" id="VendorNameSearch" style="width:100px" />
            <input type="submit" value="search" />
        </p>

<% Html.RenderPartial("VendorDDL", MeetingCalendar.Controllers.HomeController.VendorsToSelect); %>

И все работает нормально, когда я загружаю представление Create. Элемент управления VendorDDL заполняется значениями по умолчанию, найденными в VendorsToSelect. У моего контроллера List<Vendor> VendorsToSelect, который корректно обновляется.

Вот проблема: когда пользователь нажимает кнопку ПОИСК, это запускает код в контроллере: return PartialView("VendorDDL", VendorsToSelect); Я вижу, что VendorsToSelect заполняется правильно на основе поиска пользователя.

Я могу пошагово пройти по коду и увидеть, что сразу после return PartialView("VendorDDL", VendorsToSelect); отладчик переходит непосредственно к VendorDDL.ascx, и я вижу, что Модель правильно заполнена новым VendorsToSelect и item.VendorId и item.VendorName показывают правильные значения. Но когда отладка завершена и отображается представление «Создать», элемент управления VendorDDL не показывает новые данные.

Есть предложения?

1 Ответ

0 голосов
/ 16 февраля 2010

Я думаю, что вывод вашего контроллера отбрасывается, потому что представление (Create) имеет тот же Html.RenderPartial ("VendorDDL", MeetingCalendar.Controllers.HomeController.VendorsToSelect), что и при первоначальной загрузке.

Если я правильно понимаю вашу проблему (и по общему признанию, не смотря на контроллер, я не могу) - вам нужно пройти модель динамически.Самый простой (но не самый эффективный) способ - это вызвать jquery-вызов $ .load ("/ Home / VendorDDL"), который будет заполнен всей моделью;затем отправьте hijax форму и передайте данные формы тому же действию контроллера.

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