2

ASP.NET MVC プロジェクトで T4MVC を使用しています。

私の見解では、次のような声明があります。

<% Html.RenderPartial(MVC.SomeController.Views.PartialViewName); %>

以前は次のようでした。

<% Html.RenderPartial("../SomeController/PartialViewName"); %>

以前は正常に動作していましたが、T4MVC を使用して部分ビューを指定した後、その部分ビューを見つけることができません。

デフォルトの動作である以下のパスでそれを見つけようとしています。

~/Views/SomeController
~/Views/Shared

T4MVC を使用して、他のコントローラーのビュー フォルダーにある部分ビューを指定する方法はありますか? または私が何をしていても、それは正しいですか? 私は何が欠けていますか?

ありがとう。

4

2 に答える 2

4

1 つのアプローチ - ビューエンジンを拡張して、特定の部分ビューの場所を認識させることができます。私自身、すべての部分ビューをViews/Home/Partial(where Home=>controller name) フォルダーに入れました。

 public class ViewEngine : WebFormViewEngine
    {
        public ViewEngine()
        {
            PartialViewLocationFormats = PartialViewLocationFormats
                .Union(new[]
                       {
                           "~/Views/{1}/Partial/{0}.ascx",
                           "~/Views/Shared/Partial/{0}.ascx",
                       }).ToArray();
        }
    }

しかし、アプリの構造が間違っているように思えます。コントローラー固有の部分ビューは、別のコントローラーに関連付けられている部分ビューをレンダリングしないでください。これらの部分ビューを共有フォルダーに入れます。

于 2009-11-10T09:55:49.287 に答える
4

ご存知かもしれませんが、T4MVC を変更して、短い名前ではなくビューへのフル パスを生成するようにしました。したがって、上記の元のコードは機能するはずです。問題が発生した場合はお知らせください。

これはビルド 2.6.03 にあります。 ダウンロードページ.

于 2009-12-13T16:43:46.960 に答える