1

asp.net mvc 3 では、デフォルトの html ヘルパーは fromSystem.Web.Mvc.Htmlです。のヘルパーを使用したいと思いSystem.Web.WebPages.Htmlます。試してみると、インスタンスを取得したり、にアクセスしたりすることができないようですSystem.Web.WebPages.Html。これが私が試したことです:

それほど複雑になるとは思わなかったので、これらすべてをインラインでかみそりで試しました(笑)。

これはバージョン付きでした

<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

新しいものを使う

最初に、単純にインスタンス化しようとしました:

@{ var h = new System.Web.WebPages.Html.HtmlHelper(); }

実行してこれを取得するまで、これはうまくいくように見えました:

Compiler Error Message: CS0143: 
The type 'System.Web.WebPages.Html.HtmlHelper' has no constructors defined

リフレクションの使用

だから私はそれが抽象クラスであると考え、それを継承しようとしました。いいえ、それは実際のクラスであり、プライベート コンストラクターを使用するだけです。だから反省してみた

@using System.Reflection
@{
 BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public;
 System.Globalization.CultureInfo ci = null;
 var instance = (System.Web.WebPages.Html.HtmlHelper)Activator.CreateInstance(
    typeof(System.Web.WebPages.Html.HtmlHelper), 
    flags,
    null, 
    new object[] { ViewData.ModelState },
    ci
    );
}

このエラーにつながる:

Exception Details: System.MissingMethodException: 
Constructor on type 'System.Web.WebPages.Html.HtmlHelper' not found.

直接アクセス希望

次に、アクティブなバージョンを探してみました。

var h = System.Web.WebPages.HelperPage.Html;

このエラーにつながる(hはnullでした)

Object reference not set to an instance of an object.

これらの他のバージョンを試してみましたが、これも失敗し、このクラスのインスタンスを取得する方法がわかりませんでした。私はアクセスできます@Htmlが、私が言ったように、HtmlHelperこの状況には適していません。

のインスタンスを取得するにはどうすればよいですSystem.Web.WebPages.Htmlか??

4

1 に答える 1

-2

System.Web.WebPages.Html はクラスではなく名前空間であり、名前空間をインスタンス化することはできません。

http://msdn.microsoft.com/en-us/library/system.web.webpages.html(v=vs.111).aspx

System.Web.WebPages.Html.HtmlHelper が必要だと思います

于 2012-12-21T02:10:37.910 に答える