У меня есть ситуация, когда мне нужно написать HTML-помощник для expand другого html-помощника. Обычно помощник будет выглядеть так.
@Html.TextAreaFor(model => model.Content, new { @class = "some css", @data_bind = "some other stuff..." })
Это отлично работает, но его нужно обернуть в какой-то другой HTML, который всегда один и тот же. Я хотел инкапсулировать его для удобства, например.
public static MvcHtmlString CondensedHelperFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes) {
var stringBuilder = new System.Text.StringBuilder();
var tag = new TagBuilder("div"); tag.AddCssClass("some_css");
stringBuilder.Append(toolbar.ToString(TagRenderMode.SelfClosing));
stringBuilder.Append(htmlHelper.TextAreaFor(expression, htmlAttributes));
// more tags and such...
return new MvcHtmlString(stringBuilder.ToString());
}
Линия stringBuilder.Append(htmlHelper.TextAreaFor...
- это то, что я хочу изменить. Класс CSS, который должен пройти там, будет всегда. Поэтому я бы предпочел включить его здесь. Однако я хотел бы указать дополнительные классы CSS в помощнике верхнего уровня. Итак...
@Html.CondensedHelperFor(model => model.Content, new { @class = "some_other_css" })
И статический css, который всегда будет там, будет скрыт через Помощника.
Любые идеи?