在asp.net mvc 3中,默認的html幫手來自System.Web.Mvc.Html
。我想使用System.Web.WebPages.Html
的幫手。儘量嘗試,我似乎無法獲得實例或訪問System.Web.WebPages.Html
。這是我曾嘗試過的:如何實例化Web.Webpages.Html.HtmlHelper?
我在內置剃鬚刀的情況下嘗試了所有這一切,因爲我不認爲它會變得複雜(哈哈)。
這與版本
<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爲空)
Object reference not set to an instance of an object.
我嘗試過其他版本,這些版本也不成功,並感到失去了如何獲得這個類的實例。我可以訪問@Html
,但正如我所說,這不是正確的HtmlHelper
這種情況。
我如何獲得System.Web.WebPages.Html
的實例?
的是什麼?也許還有其他方法可以讓你獲得什麼?它是一個特定的功能嗎? –
@SimonWhitehead - 它有很多功能。如果您查看這兩個類的文檔,則「Web.Mvc」中不存在任何驗證,此外,還存在許多函數中不存在的重載。一個非常簡單的例子就是'Html.Label'幫手,其中'Mvc'只有2個重載,而網頁有3個。這比這個更深,因爲我認爲這個差異導致驗證無法正確設置各種情況。 –
也許我誤解了你,但MVC Helper具有相同的..如果不是更多(感謝'LabelExtensions')重載。另外,在** MVC Helper中有**驗證例程。您能舉出一個您想要實現的具體示例嗎?我只是沒有看到推理.. –