2010-02-16 2 views
0

У меня есть пользовательский элемент управления: VendorDDL.ascx, со следующим кодом:ASP.NET MVC - PartialView не освежающие

<%@ 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); %> 

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

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

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

Любые предложения?

ответ

0

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

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

Смежные вопросы