ASP.NET MVC - PartialView没有刷新

时间:2010-02-16 00:40:42

标签: asp.net-mvc

我有一个用户控件: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控件不显示新数据。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为控制器的输出被丢弃,因为视图(Create)在初始加载期间具有相同的Html.RenderPartial(“VendorDDL”,MeetingCalendar.Controllers.HomeController.VendorsToSelect)。

如果我正确理解你的问题(并且不可否认,我可能不会看到控制器) - 你需要动态传递模型。最简单(但不是最有效)的方法是让jquery调用$ .load(“/ Home / VendorDDL”)来填充整个模型;然后在表单上提交hijax并将表单数据传递给同一控制器操作。