использование usercontrol на странице aspx в MVC с использованием частичного представления - PullRequest
0 голосов
/ 17 июня 2009

У меня выпадающий список, и при нажатии кнопки я хочу отобразить данные в пользовательском контроле приведенный ниже код не работает должным образом.

<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 Ответ

1 голос
/ 17 июня 2009

Поскольку вы делаете полный пост формы, вы не хотите возвращать частичное представление. Вы хотите установить 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();
    }
...