次のタイプとクラスがあります。
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.ascxEditableContent
レンダリング部分はすべて正常に動作しますが、投稿すると、内部のすべてがContentEditorバインドされていません。つまりPage.Content、null.
PartialView では、強く型付けされた Html ヘルパーを使用してこれを行います。
<%= Html.HiddenFor(m => m.TemplateId) %>
しかし、 によってレンダリングされるフォーム上の入力要素は、その属性のプレフィックスをContentEditor.ascx取得しないため、値は にバインドされません。ContentidPage
これを克服するために、ゆるく型付けされたヘルパーを使用してみました:
<%= Html.Hidden("Content.TemplateId", Model.TemplateId) %>
そして、私List<T>が何かのプロパティを扱っているとき、それは非常に醜くなります。次に、コレクション インデックスを手動でレンダリングする必要があります。
Page と EditableContent の両方をパラメーターとしてコントローラー アクションに配置する必要がありますか?:
public ActionResult Edit(Page page, EditableContent content) { ... }
私は何が欠けていますか?