1

T4MVCは、エリアを除くすべての場所で正常に機能しています。

エリアでは、コントローラーとアクションを取得しますが、ビューは取得しません。

したがって、コントローラーに次のように書き込むことはできません。

return View(MVC.MyArea.MyController.Views.MyView);

エリア外では、次のように書くことができます。

return View(Views.MyOtherView);

エリアコントローラのアクションを参照することもできます。

MVC.MyArea.MyController.MyAction()

言い換えると:

a。エリアにない場合は、欲しいものを何でも手に入れることができます。

b。エリアコントローラーのアクションを取得できます。

c。しかし、自分のエリアで自分のビューを取得できません。

問題は何でしょうか?

TIA

編集:

問題は、T4MVCを再実行することです(David Ebboの回答と私の「回答」を参照)。

4

2 に答える 2

1

あなたが持っているものはうまくいくはずです、そして私はそれを次のように検証しました:

  • 新しいMVC3アプリを作成し、最新のT4MVC 2.6.40を追加します(nuget経由)
  • MyAreaという名前のエリアを追加する
  • MyControllerという名前のコントローラーを追加する
  • MyViewという名前のビューを追加する
  • T4MVC.ttカスタムツールを再実行してください

その後、私は書くことができます:

namespace Mvc3Application.Areas.MyArea.Controllers {
    public partial class MyController : Controller {
        public virtual ActionResult Index() {
            return View(Views.MyView);
        }
    }
}

また

namespace Mvc3Application.Areas.MyArea.Controllers {
    public partial class MyController : Controller {
        public virtual ActionResult Index() {
            return View(MVC.MyArea.My.Views.MyView);
        }
    }
}

2番目のケースでは、「MyController」ではなく「My」のトークンが常に機能することに注意してください。

クリーンなアプリでこれらの手順を実行して、機能するかどうかを確認してください。

于 2011-01-17T07:28:04.340 に答える
1

私の問題は、T4MVCが再実行されていないことが原因であると考えています。その結果(私は推測します)、T4MVCはプロジェクトの変更を反映するように更新されません。たとえば、コントローラーのアクションのパラメーターを変更します。または(この質問に固有)新しいビューを追加します。

再実行の取得に関するT4MVCのドキュメントはあいまいですが、Chirpyと呼ばれるVSアドインを示しています。

Chirpyがインストールされたら、それを構成する必要があります。これを行うには、Visual Studioを開き、[ツール] >> [オプション]に移動して、[Chirpy]オプションを選択します。

画像を参照してください:

代替テキスト

それを機能させるには、テンプレート名T4MVC.ttビットを追加する必要がありました。これが必要かどうか、またはその理由はわかりません。しかし、今ではすべて正常に機能しています。

これを行うためのより良い方法があれば、私に知らせてください。

于 2011-01-17T14:24:42.240 に答える