2016-07-07 6 views
0

私は、領域を持つMVCアプリケーションを持っています。そして、1つの領域に、 "Areas/Admin/Views/Shared/EditorTemplates /"フォルダにあるAddressというエディタテンプレートを使用しています。属性ルーティングでのMVCエディタのテンプレートパスの問題

エディタテンプレートとビューを返すコントローラのアクションは、私のようにビューのエディタテンプレートを持っている(管理領域にある)ユーザコントローラの「EditUser(ロングUSERID)」

@Html.EditorFor(x => x.Address, "../Views/Shared/EditorTemplates/Address") 

これは、明示的にパスを定義しなくても機能します。

"..Admin/User/EditUser?userId = 1"でこのページにアクセスすると問題なく動作します。しかし、EditUserの属性ルーティングを次のように使用した場合:

[Route("admin/user/{userId}/edit")] 

エディタテンプレートはデフォルトビューを使用しています。 (基本的にモデルのすべてのエディタを表示します)

私の質問は、上記の属性ルーティングを使用してエディタテンプレートをどのように指すことができますか?

答えて

0

[UIHint]を使用して特殊エディタを使用するViewModelのプロパティに、エディタテンプレートの名前を指定することができます。

public class ViewModel { 
    [UIHint("Address")] 
    public string Address {get; set;} 
} 
+0

動作していないようです。 RazorエンジンがAddressエディタテンプレートへのパスを見つけることができないことに関連した問題はありませんか? – Nadeeja

+0

UIHintは通常の方法、つまりArea \ Views \ {Controller} \、Area \ Views \ Shared \、Views \次にテンプレートを検索します。 –

0

さて、私は運でそれを解決しました。

コントローラの上に[RouteArea( "Admin")]タグを追加し、通常通りにアクションにルート属性を追加し、Html.EditorForから明示的なパスを削除して、テンプレートの

魅力的な作品です。

関連する問題