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
か??