オブジェクト。 ...この例では再利用可能なエディタテンプレートは、私はかみそりビューでMVC3を使用していますし、私のクラスのいくつかのための再利用可能なDropDownListsを構築したいと思いますが、はるかに検索した後、私は私がそれを必要とする正確にどのように実行例を発見していない
私はこのような2つのクラスを持っている: -
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public Group Group { get; set; }
}
public class Group
{
public int ID { get; set; }
public string Name { get; set; }
}
Iパーソンのためのワーキングコントローラ/ビューを持っています。ビューがDropDownListForコントロールを持っている:私はこの段階で他の抽象1に説得力のある理由を発見していないよう
@model Person
...
@Html.DropDownListFor(o => o.Group.ID, (ViewData["groups"] as SelectList))
ビューは、仲介モデルではない、直接Personクラスを使用しています。
上記作品罰金...私はそれを見て、人でGroup.IDからの値はビューから返さつかむし、その結果にPerson.Groupを設定するコントローラインチ作品が、理想的ではありません。
バインダーが見つかった:MVC DropDownList values posted to model aren't boundこれは私にとってはうまくいくが、私はそれをまだやっていない。再利用できるのは本当に便利だからだ。
@model Group
@Html.DropDownListFor(o => o.Group.ID, (ViewData["groups"] as SelectList))
そして、このようなビューでそれを使用します。 - - を:私がやりたいのは何
は、テンプレートにこのようなものを持っている
@Html.EditorFor(o => o.Group)
しかし「は前記doesnの上記のEditorForの行は、クラス全体のエディタを挿入します(例:Group.Descriptionのテキストボックスなど)...私のグループがリストされたDropDownListを挿入するのではなく
私は上記を持っていますViews/Shared/EditorTemplatesのGroup.cshtmlファイルにemplateする
クラスがGroup型のプロパティを持つときはいつでも、このDropDownListエディタはデフォルトで(または少なくともいくつかの属性で指定されていると)使用されます)あなたはこれを処理するために、リストのユーザーコントロールのドロップダウンを作成することができます
これは良い答えです。 'EditorFor'にテンプレートを探す場所を教えてください(ビューベースで別のテンプレートを使用したい場合など)。これは次のようになります: '@Html.EditorFor(x => x.Filters.SelectedImprintId、"〜/ Views/Books/EditorTemplates "、Model.Filters.ImprintItems)' –