0

私は Asp.net MVC 1 を使用しています。コントローラー アクションで、コンパイル時に型チェックを強制する StronglyTyped View(data) 呼び出しを使用し、既定のビュー エンジンで aspx ページを使用できるようにしたいと考えています。私が呼び出す ViewPages は厳密に型指定されていますが、組み込みの Controller View(data) メソッドは厳密に型指定されておらず、表示を確認することさえできないため、View(data) へのアクションの呼び出しのエラーをコンパイル時にキャッチできません。コンパイル時にページが存在する場合。

この投稿を使用して部分的な解決策 (以下のコード) を実装しましたが、(1) 厳密に型指定されたビューのコード ビハインドを作成しない限り、一般的なビュー関数で強力なビュー ページのタイプを認識することができず、(2 ) この方法ではインテリセンスとリファクタリングが適切に機能しないため、使用している方法の信頼性が疑わしくなります。

質問: アクションからビューを呼び出すときに型を強制するより良い方法はありますか?

代替手段:私のアクション メソッドがビューページのインスタンスを作成し、いくつかのプロパティを直接設定し、その HTML をアクション応答にレンダリングできる代替手段はありますか?

コード: これは、これまでの内容を達成するために、すべてのコントローラーが継承する基本クラスです。

 public class StrongController : Controller 
    {

        protected ActionResult View<TView, TModel>(TModel model)
            where TView : ViewPage<TModel>
            where TModel : class
        {
            return View(typeof(TView).Name, model);
        }


    }

そして、使用中のコントローラーの例を次に示します。

    public class HomeController : StrongController 
    {

        public ActionResult Index()
        {
            return View<ExampleMVCApp.Views.Home.Index, ExampleData>(new ExampleData());
        }


    }
}

型認識に必要なViewPageコードビハインド... Aspxヘッダーが機能しませんでした

namespace ExampleMVCApp.Views.Home
{
    public class Issue : System.Web.Mvc.ViewPage<ExampleData>
    {
    }

}
4

1 に答える 1

0

T4MVCヘルパーにスピンを与える必要があると思います(ここでの最初の発表の1つ)。これらのテンプレートは既存のビューに基づいてコードを生成し、これらの「偽の」メソッド呼び出しを使用してビューに対処するため、これにより、少なくとも既存のコードを取り除くことができます。

あなたの見解によって宣言された特定のモデルに対して強く型付けされるようにあなたの呼び出しを持っていることについてView、私はこれらのヘルパーがあなたを助けるかどうか正確にはわかりません(私は彼らがそうするのではないかと思いますが)。ただし、そうでない場合でも、T4MVCコードをハックして自分でハックするか、元の作成者であるDavid Ebboに連絡して、追加機能を提案することができます。

于 2009-08-24T08:56:06.897 に答える