使用局部视图在MVC中的aspx页面上使用usercontrol

时间:2009-06-17 12:51:37

标签: asp.net-mvc renderpartial

我有Dropdown并且单击按钮,我想在usercontrol中显示数据 以下代码未按预期工作。

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <%
        using (Html.BeginForm())
        {%>
    <%=Html.DropDownList("CarMake", (SelectList)ViewData["CarMake"])%>
    <input type="submit" value="Get all car model" />
    <%
         Html.RenderPartial("CarModel");
        } %>
</asp:Content>

//在控制器中

 public ActionResult Test1()
        {
            ViewData["CarMake"] = new SelectList(_carDataContext.Makes.Select(m => new { ID = m.Id, Name = m.Name }), "ID", "Name");
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Test1(int carMake)
        {
            ViewData["CarMake"] = new SelectList(_carDataContext.Makes.Select(m => new { ID = m.Id, Name = m.Name }), "ID", "Name");
            var carModel = _carDataContext.Models.Where(m => m.MakeId == carMake).ToList();
            return PartialView("CarModel", carModel);
        }

1 个答案:

答案 0 :(得分:1)

由于您正在撰写表单的完整帖子,因此您不希望返回部分视图。您希望将ViewData [“CarModel”]设置为正确的模型,然后重新渲染相同的视图。视图中的RenderPartial将使用它在代码中“包含”正确的局部视图。

请注意,如果您通过AJAX发布,则会有所不同。此时,您已将其设置为替换页面的特定元素,并且您希望仅渲染进入该元素的部分。

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Test1(int carMake)
    {
        ViewData["CarMake"] = new SelectList(_carDataContext.Makes.Select(m => new { ID = m.Id, Name = m.Name }), "ID", "Name");
        ViewData["CarModel"] = _carDataContext.Models.Where(m => m.MakeId == carMake).ToList();
        return View();
    }