Я совсем новичок в ASP MVC, так может быть, это просто, но я действительно застрял потому что я искал на форумах, не повезло;)ASP MVC2 Получение сложного вложенного объекта из формы
Я подготовил простой пример моей проблемы. Вот что я пытаюсь сделать. У меня есть следующая модель, которую я передаю к виду:
public class SearchModel
{
public int ItemsFound { get; set; }
public int TotalItems { get; set; }
public SearchFacetModel SearchFacet { get; set; }
}
и вложенному классу
public class SearchFacetModel
{
public string SearchText { get; set; }
public DateTime DateFrom { get; set; }
public DateTime DateTo { get; set; }
}
Контроллер выглядит следующим образом
[HttpGet]
public ActionResult Index()
{
SearchModel model = new SearchModel { SearchFacet = new SearchFacetModel() { SearchText = "test", DateFrom = DateTime.Now }, ItemsFound=1, TotalItems=10 };
return View(model);
}
[HttpPost]
public ActionResult Index(SearchModel model) // Where is model.SearchFacet? Why null?
{
return View(model);
}
The зрение:
<% using(Html.BeginForm()) { %>
Search<br />
<%=Html.TextBoxFor(m=>m.ItemsFound) %><br />
<%=Html.TextBoxFor(m=>m.TotalItems) %><br />
Search Facet<br />
<% Html.RenderPartial("SearchFacet", Model.SearchFacet); %>
<button type=submit>Submit</button>
<%} %>
SearchFacet contr ol:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication3.Models.SearchFacetModel>" %>
<%=Html.TextBoxFor(m=>m.DateFrom) %>
<%=Html.TextBoxFor(m=>m.DateTo) %>
<%=Html.TextBoxFor(m=>m.SearchText) %>
Теперь, я уже поставил комментарий рядом с методом Index с HttpPost. Я получаю объект SearchModel, но у него нет дочернего объекта SearchFacet. Ребенок имеет значение null.
Когда я меняю SearchFacet.ascx, чтобы принять всю SearchModel и передать ее с основного вида, тогда она работает. Но я не хочу передавать все вещи всегда и везде. У меня наверняка отсутствует что-то, связанное с Model Binder, но что и как заставить его работать? :)
Любая помощь будет оценена по достоинству.
Gacu
Thanx. Вот чего мне не хватало :) – Krzysztof