2009-06-05 31 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。