2015-07-12 37 views
1

當您將匿名類型傳遞給像TextBox這樣的HtmlHelper方法時,您會收到綁定錯誤(因爲匿名類型成員只有內部訪問權限),除非您使用use a RouteDataDictionary to extract the membersILSpy(又名.NET Reflector)顯示了一種只是調用自己的方法,爲什麼?

當我看到(HtmlHelper擴展)InputExtensions.TextBox方法接受匿名類型時,我知道它必須在內部進行一些轉換,否則它會失敗並顯示相同的錯誤。

果然,它調用HtmlHelper.AnonymousObjectToHtmlAttributes方法,其文檔試圖通過不提及它來淡化該問題,而是建議只使用破折號替換下劃線以確保使用有效的屬性名稱。當然。無論如何...

我想看看到底是什麼轉換的樣子,但是當我在ILSpy中檢查HtmlHelper的靜態方法時,該方法似乎只是調用它自己。這裏發生了什麼?

從System.Web.MVC.HtmlHelper
public static RouteValueDictionary AnonymousObjectToHtmlAttributes(object htmlAttributes) 
{ 
    return HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); 
} 

回答

0

方法AnonymousObjectToHtmlAttributes呼喚具有相同的名稱,但是從System.Web.WebPages.Html.HtmlHelper的方法。

ILSpy沒有明確說明這一點。我需要懸停類從它是未來顯示:

enter image description here

我問過類似的問題,這是anwered這裏。

+0

@Triynko它回答你的問題嗎? –

相關問題