我有一个用户控件: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
,它正在正确更新。
问题在于:当用户单击SEARCH按钮时,会触发Controller中的代码:return PartialView("VendorDDL", VendorsToSelect);
我可以看到VendorsToSelect正在根据用户搜索正确填充。
我可以逐行执行代码,并在return PartialView("VendorDDL", VendorsToSelect);
之后立即查看,调试器直接转到VendorDDL.ascx,我可以看到模型已正确填充新的VendorsToSelect,item.VendorId和item.VendorName显示正确的值。但是,当完成调试并显示Create视图时,VendorDDL控件不显示新数据。
有什么建议吗?
答案 0 :(得分:0)
我认为控制器的输出被丢弃,因为视图(Create)在初始加载期间具有相同的Html.RenderPartial(“VendorDDL”,MeetingCalendar.Controllers.HomeController.VendorsToSelect)。
如果我正确理解你的问题(并且不可否认,我可能不会看到控制器) - 你需要动态传递模型。最简单(但不是最有效)的方法是让jquery调用$ .load(“/ Home / VendorDDL”)来填充整个模型;然后在表单上提交hijax并将表单数据传递给同一控制器操作。