开发者

ASP.NET MVC - PartialView not refreshing

I have a user control: VendorDDL.ascx, with the following code:

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

My view: Create.aspx, has the following code snippet:

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

And everything works fine when I load up the Create view. The VendorDDL control is populated with the default values that are found in the VendorsToSelect. My controller has a List<Vendor> VendorsToSelect, which is getting updated properly.

Here is the problem: when the user clicks the SEARCH button, this fires off code in the Controller: return PartialView("VendorDDL", VendorsToSelect); I can see that VendorsToSelect is getting populated correctly based upon the user search.

I can step through the code, line-by-line, and see that immediately after return PartialView("VendorDDL", VendorsToSelect);, the debugger goes directly to the VendorDDL.ascx, and I can see that the Model is properly populated with the new VendorsToSelect, and the item.VendorId and i开发者_如何学Pythontem.VendorName are showing the correct values. But when debugging is done, and the Create view is shown, the VendorDDL control is not showing the new data.

Any suggestions?


I think that the output of your controller is discarded because the view (Create) has the same Html.RenderPartial("VendorDDL", MeetingCalendar.Controllers.HomeController.VendorsToSelect) as during initial load.

If I understand your problem correctly (and admittedly, without looking at the controller I may not) - you need to pass the model dynamically. The simplest (but not the most efficient) way would be to have jquery call $.load("/Home/VendorDDL") that would populate with the whole model; and then on submit hijax the form and pass form data to the same controller action.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜