这有效:
@Html.TextBox("body", ViewData["body"], new { @class = "form-control" })
尽管如此:
@Html.TextArea("body", ViewData["body"], new { @class = "form-control" })
返回此错误:
CS1503:参数3:无法转换为'对象'到'字符串'
显然它与文本区域有关,但为什么呢?
答案 0 :(得分:1)
TextArea
重载将字符串值作为第二个参数。
public static MvcHtmlString TextArea(
this HtmlHelper htmlHelper,
string name,
string value,
object htmlAttributes
)
表达式ViewData["body"]
返回object
,而不是字符串。您需要将ViewData["body"]
显式转换为字符串并将其作为参数传递。您可以使用as
运算符进行安全投射。
@Html.TextArea("body",ViewData["body"] as string, new { @class = "form-control" })
适用于TextBox
助手,因为TextBox
重载为值参数采用object
类型。
public static MvcHtmlString TextBox(
this HtmlHelper htmlHelper,
string name,
object value,
IDictionary<string, object> htmlAttributes
)
答案 1 :(得分:0)
ViewData是一组对象。 textarea重载需要一个字符串。如果您的视图数据项是字符串,则将其转换为字符串。
@Html.TextArea("body", ViewData["body"].ToString(), new { @class = "form-control" })
或者它是一个复杂的对象,然后转换为对象并引用所需的属性..再次转换为字符串不是一个字符串。
@Html.TextArea("body", ((MyObject)ViewData["body"]).MyProperty.ToString(), new { @class = "form-control" })
希望有所帮助。