私が単純なモデルを持っているとしましょう:
public Vehicle {
public int year;
}
そして、そこから拡張された別のモデルがあります。
public Car : Vehicle {
public string make;
}
年を設定できる Vehicle 用の EditorTemplate があります。Views/Shared/EditorTemplates に保存されます。
@model Vehicle
Year: @Html.EditorFor(m => m.year)
Vehicle の EditorTemplate を呼び出す Car の EditorTemplate を作成したいのですが、make を設定する機能も追加します。Vehicle にさらにプロパティを追加する場合は、Vehicle エディタ テンプレートを変更するだけで済みます。My Car エディターのテンプレートを変更する必要はありません。
私はこのようなものがうまくいくと思っていたでしょう:
@model Car
@Html.EditorForModel("Vehicle")
Make: @Html.EditorFor(m => m.make)
...しかし、何らかの理由で、そうではありません。私の見解は次のように単純です。
@model Vehicle
@Html.EditorForModel()
そのビューは、Car モデルを渡すと Car テンプレートを呼び出すことになるので、うまくいきます。しかし、表示されるのは make のエディタだけです。年間何もありません。したがって、この行@Html.EditorForModel("Vehicle")
は何もしていないように見えます。Vehicle EditorTemplate は呼び出されません。
何か案は?これらは両方とも /Views/Shared/EditorTemplates 内のエディター テンプレートであり、何か関係があるのでしょうか。試してみ@Html.EditorForModel("~/Views/Shared/EditorTemplates/Vehicle")
て、.cshtml を追加しましたが、どちらも機能しませんでした。