2009-06-05 63 views
4

我在其中包含了一些文本框,下拉列表和文本區域的MVC視圖的形式。我使用HTML助手來創建這些控件,包括在適當的位置預先填充View數據,並通過htmlAttributes參數應用樣式。MVC Html.TextArea超載問題

這是當我添加htmlAttributes它停止工作的文本區,聲稱最好重載的方法具有一些無效參數但是做工精緻與TextBox控件和DropDownLists等,發生故障的代碼是:

Html.TextArea("Description", ViewData["Description_Current"], new { @class = "DataEntryStd_TextArea" }) 

所得錯誤是:

「System.Web.Mvc.HtmlHelper」不包含關於「的TextArea」 的定義和最佳的擴展方法過載 「System.Web.Mvc.Html.TextAreaExtensions .TextArea( System.Web.Mvc.HtmlHelper, 字符串,字符串對象)」具有一些無效參數

爲了比較那些做工精細的文本框電話是:

Html.TextBox("TelephoneNumberAlternate", ViewData["TelephoneNumberAlternate"], new { @class = "DataEntryStd_TextBox" }) 

我試圖明確引用TextAreaExtensions .TextArea幷包含HtmlHelper參數,但這沒有什麼區別。

對於信息的文本區域呼叫而不htmlAttributes參數正常工作。此外,我已經嘗試爲類屬性指定名稱/值字典,但是這會遇到完全相同的問題。

任何想法我做錯了什麼?

+0

真棒工作的傢伙。一定要喜歡這樣一個事實,即SO社區的速度非常快,以至於我無法單獨解決的問題不會對我的日子產生特別的影響!謝謝! :) – Timbo 2009-06-05 14:08:16

回答

12

它總是讓我誤解,這些錯誤消息不告訴你參數中哪一個不匹配。

你試過嗎?

Html.TextArea("Description", ViewData["Description_Current"].ToString(), new { @class = "DataEntryStd_TextArea" }) 

的原因,我問的是,ViewData["Description_Current"]Object型的,並且存在與簽名Html.TextArea(String, Object)過載 - 雖然在這種情況下,對象表示HTML屬性。這可能是爲什麼編譯器不會抱怨,直到你添加爲第三個參數的HTML屬性 - 直到這時,第二個參數被允許爲Object,但只要你添加第三個參數,第二必須是一個String

3

您需要在計算機[「Description_Current」]轉換爲字符串作爲該方法需要簽名(字符串,字符串對象)不(字符串,對象,對象)。 TextBox的工作原理是因爲有一個使用html屬性的簽名(字符串,對象,對象)。

<%= Html.TextArea("Name", 
        (string)ViewData["Value"], 
        new { @class = "klass" }) %> 

Google文檔HtmlHelper.TextBoxHtmlHelper.TextArea可在MSDN。