0

MVC メカニズムを使用して繰り返し可能なレイアウトを作成することは可能ですか? 例: ショー全体に HTML のスニペットがあり、同じ要素と属性を持っている必要がありますが、別のコンテンツを持つことができます (コンテンツは HTML の束でもかまいません)。

私はHTMLヘルパーに傾倒していましたが、これは次のようなことを許可していないようです:

@Html.Business(Name, Attr2)
{
    <em>Do Not Contact</em>
    <p>Arbitrary text</p>
}
@Html.Business(Name, Attr2)
{
    <table>...</table>
}

ここで重要な点は、埋め込まれた HTML は任意であり、ヘルパー メソッドで使用できるパラメーターがないということです。

ありがとう、ジャック

4

1 に答える 1

0

レイアウトとテンプレートを混同しています。レイアウトは、すべてのビューの共通のコンテナーとして機能するベース フレームです。テンプレート (探しているもの) は、特定の (通常は特定の) タイプのデータを表示する方法です。

テンプレートを実装するには、2 つの基本的な方法があります。


1 つ目は、デフォルトのテンプレートとして定義することです。これは、単純な命名規則によって行われます。.cshtml ファイルの名前が Entity クラス名と同じであることを確認し、次の場所に配置してください。

/Views/Shared/DisplayTemplates/.cshtml

その後、テンプレートを使用してエンティティを表示するときはいつでも、@Html.DisplayFor()ヘルパーを使用して、それに応じてオブジェクトを提供します。

または、別の方法でテンプレートを呼び出したい場合、またはすべての状況でテンプレートを使用したくない場合は[UIHint("TemplateName")]、エンティティの属性を使用してテンプレート名を指定するか、DisplayFor() でテンプレート名を渡すことができます。


2 番目の方法は、部分ビューを使用することです。データの表示方法と使用方法の部分ビューを作成できます@Html.RenderPartial("TemplateName", object)


どちらのシナリオでも、VS インターフェイスを使用してテンプレート/部分ビューを簡単に作成できます。

  • テンプレートを作成する DisplayTemplate (または他の場所) フォルダーを右クリックし、Add>View...
  • 名前を入力してチェックを入れるCreate a strongly-typed view
  • 適切なオブジェクトを選択します (見つからない場合は、後で手動で行うことができますが、作業を簡素化するために少なくとも何かを選択することをお勧めします)
  • Details足場テンプレートとして選択
  • チェックCreate as partial viewボックスをオンにします
  • チェックを外すUse a layout or master page

が渡すオブジェクトと一致することを確認して@model <Entity Name>から、表示方法に必要な変更を加えます。

楽しみ!

-編集-

注: あなたの投稿をもう一度読んだ後、私はそれがあなたが求めているものと正確に一致しないかもしれないことに気付きましたが、それは非常に不明確です. どのように達成しようとしているのかではなく、何を達成しようとしているのかを詳しく説明できますか?

あなたが書いたコード スニペットはあまり意味がありません。

于 2012-09-04T14:22:18.850 に答える