次のタイプとクラスがあります。
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) { ... }
私は何が欠けていますか?