MVCContrib, Html.Grid:Как я могу прикрепить идентификатор на основе строки к тегу td?
-
20-09-2019 - |
Вопрос
Вот мой текущий код просмотра:
<% Html.Grid((List<ColumnDefinition>)ViewData["Parameters"])
.Columns(column =>
{
column.For(c => c.ID);
column.For(c => c.Name);
}).Render();
%>
Я хотел бы прикрепить атрибут HTML «id» к каждому тегу td «name» как таковой:
<table class="grid">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<tr class="gridrow">
<td>1</td>
<td id="parameter_1">Address</td>
</tr>
<tr class="gridrow_alternate">
<td>2</td>
<td id="parameter_2">Phone Number</td>
</tr>
</tbody>
</table>
Мой вопрос:
Как мне это сделать?
Я рассматривал метод расширения «Атрибуты», но не был уверен, как заставить его работать.
Решение 3
Возможно, лучший способ отобразить указанный HTML — полностью отказаться от MVCContrib HTML.Grid и просто визуализировать разметку с помощью foreach.
Другие советы
Синтаксис довольно странный, но это делает работа.Ответ Джоша на правильном пути.Вот полный ответ, используя строку из моего текущего проекта.Сюда входит синтаксис для использования более одного атрибута:
col.For(ts => ts.Subtitle.Abbreviation)
.Named("Subtitle<br />Language")
.Attributes(x => new Dictionary<string, object>()
{ // { "name", "value" }; results in:
{ "title", x.Item.Subtitle.Text }, // title="someLanguage"
{ "class", "someCssClass" }, // class="someCssClass"
{ "id", "someIdOrOther' } // id="someIdOrOther"
});
Вы можете включить столько пар имя-значение, сколько захотите.Каждый будет иметь доступ к .Item
свойство лямбда-переменной (x
в приведенном выше примере) на случай, если вам нужно использовать данные из объекта этой строки.
column.For(c => c.ID).Attributes(c=> new Dictionary<string, object>(){{"id", c.ID}});