9

Razor 構文でこの HTML ヘルパーを使用する場合:

@Html.EditorFor(model => model.Prop1)

...慣例は、ビューを の下にレンダリングすること Views/<CrtView|Shared>/EditorTemplates/Prop1TypeName.cshtmlです。

ここまでは順調ですね。Prop1 の (修飾された) タイプが の場合my.org.ns.TheType、ファイルTheType.cshtmlがレンダリングされることに注意してください。

.Prop1しかし、 、 、およびのモデルがある場合.Prop2:

Prop1.GetType().FullName == "my.org.ns1.TheType";
Prop2.GetType().FullName == "my.org.ns2.TheType";  //same type name but different namespace

私はこれを Razor と呼んでいます:

@Html.EditorFor(model => model.Prop1)
@Html.EditorFor(model => model.Prop2)

...種類ごとに異なるビューを表示することはできません。

これを明確にする方法はありますか?

.cshtmlファイルの命名規則について、私が知っている以上のことがあるでしょうか?

4

3 に答える 3

9

このオーバーロードを使用して、使用するエディターの名前を指定できます。これにより、EditorTemplates に名前を付けてFirst.cshtmlSecond.cshtmlView でこれを行います。

@Html.EditorFor(model => model.Prop1, "First")
@Html.EditorFor(model => model.Prop2, "Second")

ただし、名前空間が異なっていても、同じプロジェクトで同じ型名を再利用することは避けることをお勧めします。これは、コードを読んでいる人にとって混乱を招く可能性があります。これは、フレームワークが使用するテンプレートを認識していないことよりも大きな問題です。

于 2013-08-26T13:11:46.410 に答える
2

必ずしも規則を使用する必要はありません。独自のテンプレート名を持つことができます。

このような、

@Html.EditorFor(model => model.Prop1,"TheType_1")
@Html.EditorFor(model => model.Prop2,"TheType_2")

ここで、「TheType_1」と「TheType_2」は、異なるタイプの異なるテンプレート名です。これは、利用可能な6 つの異なるオーバーロード メソッドの 1 つです。

于 2013-08-26T13:11:38.410 に答える