2011-01-30 10 views
5

EditorFor()ヘルパーを使用して私のビューで編集テンプレートをレンダリングしています。このテンプレート内でDisplayFor()を呼び出して表示テンプレートをレンダリングします。このEditorForテンプレートコントロール内からDisplayFor()を使用することは可能ですか

このよう

は、私は、クライアントのプロパティをレンダリングDisplayForテンプレートで/Shared/EditorTemplates/Client.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BusinessNext.Models.Ef.Client>" %> 
<%: Html.DisplayFor(client=>client) %> 

の内側にあります。 DisplayForテンプレートは、他の場所から呼び出されたときに完全に正常に動作しますが、EditorForテンプレートからは何もレンダリングされません。 DisplayFor()コールが実際にDisplayForテンプレートに到達することはないようです。

答えて

3

私は唯一の方法は、部分的に使用することを恐れています:

<%= Html.Partial("~/Views/Home/DisplayTemplates/Client.ascx", Model) %> 
+0

私は<%Html.RenderPartial(MVC.Shared.Views.DisplayTemplates.Client、Model);を試しました。 %> 私はT4MVCを使用しており、ビューのユーザーコントロールが見つかりません。ディレクトリを検索し、見つからない標準エラーを返します。さもなければ、私のT4MVCは今までのところ常に働いていました。 – mare

+0

どちらもこれはありません、同じエラー<%= Html.Partial(MVC.Shared.Views.DisplayTemplates.Client)%> - これらの2つのフォルダには特別なものがありますか? – mare

+0

@mare、no、特別なものはありません。文字列を渡して、違いがあるかどうか確認してください。また、エラーメッセージの中で検索された場所はあなたに何を伝えますか?彼らはいくつかのヒントを与えていますか? –

1

複雑なオブジェクトをテンプレートに良い考えであればそれは議論の余地があることができ、またはネストされたテンプレートへの私のアプローチがハックされた場合またはない。これの利点は、親と子の両方にテンプレートを持たせることができ、部分ビューを選択/使用する必要がなくなります。

これらのすべてを脇に、テンプレートビューはネストすることができます。の場合は、部分ビューを間に使用します。共有部分は次のようになります

Html.RenderPartial("SharedDisplayGoBetweenForFoo", item); 

@model Foo 

@Html.DisplayFor(a => a); 

内側のテンプレートは、呼び出されます

外のテンプレートを使用すると、内側のテンプレートを配置したい場所を以下のようなものを持っています他のもののように見えるでしょう。

関連する問題