我知道如何扩展TextBoxFor:
public static MvcHtmlString TextBoxFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression, object htmlAttributes)
{
MvcHtmlString html = default(MvcHtmlString);
RouteValueDictionary routeValues = new RouteValueDictionary(htmlAttributes);
html = System.Web.Mvc.Html.InputExtensions.TextBoxFor(htmlHelper, expression, routeValues);
return html;
}
我想对TextAreaFor执行相同的操作,但遗憾的是 System.Web.Mvc.Html.InputExtensions 不包含TextAreaFor方法。我该如何解决这个问题?
答案 0 :(得分:2)
请参阅doc,它位于TextAreaExtensions
静态类
return System.Web.Mvc.Html.TextAreaExtensions.TextAreaFor(htmlHelper, expression, routeValues);
或只是
return htmlHelper.TextAreaFor(expression, routeValues);
顺便说一句,第三个参数只是(如TextBoxFor中)IDictionary<string, Object> htmlAttributes
,与RouteValues无关。
它正常工作,因为RouteValueDictionary
实现了IDictionary<string, Object>
,但你的论点令人困惑。
答案 1 :(得分:1)
如果您使用[System.ComponentModel.DataAnnotations.DataType(DataType.MultilineText)]
标记您的媒体资源,然后使用EditorFor
,那么您应该会得到想要的结果。
public class SomeClass
{
[DataType(DataType.MultilineText)]
public string Name { get; set; }
}
@Html.EditorFor(x => x.Name)