Короткий ответ: нет, в текущей реализации невозможно установить атрибуты tbody
.
Но вы можете реализовать эту функцию самостоятельно:
Вам просто нужно реализовать свою версию метода RenderBodyStart
из класса GridRenderer
.
Уже есть реализация GridRenderer
под названием HtmlTableGridRenderer
, на которой вы можете построить:
public class BodyWithAttributesHtmlTableGridRenderer<T>
: HtmlTableGridRenderer<T> where T : class
{
private readonly IDictionary<string, object> bodyAttributes;
public BodyWithAttributesHtmlTableGridRenderer(
IDictionary<string, object> bodyAttributes)
{
this.bodyAttributes = bodyAttributes;
}
protected override void RenderBodyStart()
{
string str = BuildHtmlAttributes(bodyAttributes);
if (str.Length > 0)
str = " " + str;
RenderText(string.Format("<tbody{0}>", str));
}
}
И в вашем представлении вместо вызова Render()
вы можете использовать метод RenderUsing
, где вы можете указать свой собственный рендерер:
@Html.Grid(Model))
.RenderUsing(new BodyWithAttributesHtmlTableGridRenderer<MyModel>(
new Dictionary<string, object>(){{"data-bind", "foreach: people"}}))
И сгенерированный html будет выглядеть примерно так:
<table class="grid">
<thead>
<tr>
<th>Prop</th>
</tr>
</thead>
<tbody data-bind="foreach: people">
<tr class="gridrow">
<td>1</td>
</tr>
<tr class="gridrow_alternate">
<td>2</td>
</tr>
</tbody>
</table>
Вы должны отметить, что это просто быстрое и грязное решение, чтобы показать, что возможно, и есть больше точек расширения, которые вы можете использовать, чтобы сделать передачу атрибутов более приятной.
person
nemesv
schedule
09.11.2012