2011-01-15 6 views
4
次CLR構文は私のaspxページでは正常に動作します

は、なぜ私がクローズジェネリックのためのInherits属性でC#の構文を使用することはできませんが、CLR構文で結構です

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="Website.MyBasePage`1[HomePageViewModel]" %> 

しかし、このC#の構文はない:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="Website.MyBasePage<HomePageViewModel>" %> 

注:私はASP.NET MVCを使用していませんが、ASP.NET MVCのSystem.Web.Mvc.ViewPage<>を使用するとうまくいきます。

マイMyBasePageは次のようになります。

public class MyBasePage<TModel> : Page where TModel : class { 
    public TModel Model 
    { 
     get { return (TModel)HttpContext.Current.Items["model"]; } 
    } 
} 

答えて

2

それはあなたが取得している例外を知るために役立つだろうが、私は問題は、一般的なページの基底クラスを持つことがASP.netで直接サポートされていないことであると思われるでしょう。これは、少しのハックを使用してMVCで達成されます。あなたはWebフォームを使用している場合は、これは自分自身をハック繰り返すことができ

、これは役立つはず:

Generic Inherited ViewPage<> and new Property

+0

ジェームズ - リンクをありがとう。私はあなたが何が起こっているのかを正確に特定したと思います。レコードについては、私が得ているエラーは次のとおりです。 パーサーエラー 説明:この要求を処理するために必要なリソースの解析中にエラーが発生しました。以下の特定の解析エラーの詳細を確認し、ソースファイルを適切に変更してください。 パーサーエラーメッセージ: 'Website.MyBasePage 'の種類を読み込めませんでした。 – beckelmw

関連する問題