У меня есть следующие типы и классы:
namespace MVC.Models
public class Page
{
public EditableContent Content {get; set; }
}
public class EditableContent
{
public TemplateSection SidebarLeft {get; set; }
public TemplateSection SidebarRight {get; set; }
}
Я хочу отредактировать экземпляр Page
в моем представлении Edit.aspx
. Поскольку EditableContent
также привязан к другим моделям, у меня есть PartialView
с именем ContentEditor.ascx
, который строго типизирован и берет экземпляр EditableContent
и отображает его.
Часть рендеринга все работает нормально, но когда я публикую - все внутри моего ContentEditor
не связано - это означает, что Page.Content
равно null
.
В PartialView я использую строго типизированные Html-помощники, чтобы сделать это:
<%= Html.HiddenFor(m => m.TemplateId) %>
Но поскольку элементы ввода в форме, отображаемые с помощью ContentEditor.ascx
, не получают префикс Content
к своему атрибуту id
- значения не связаны с Page
.
Я пытался использовать слабо набранные помощники, чтобы преодолеть это:
<%= Html.Hidden("Content.TemplateId", Model.TemplateId) %>
И когда я имею дело со свойством, которое является List<T>
чем-то, оно становится очень уродливым. Затем я должен вручную обработать индексы коллекций.
Должен ли я указать Page и EditableContent в качестве параметров для действия контроллера?:
public ActionResult Edit(Page page, EditableContent content) { ... }
Чего мне не хватает?