MVCContrib, Html.Grid: Как я могу прикрепить идентификатор на основе строки к тегу td? - PullRequest
4 голосов
/ 18 ноября 2009

Вот мой текущий код просмотра:

<% Html.Grid((List<ColumnDefinition>)ViewData["Parameters"])
    .Columns(column =>
        {
            column.For(c => c.ID);
            column.For(c => c.Name);
        }).Render();
%>

Я бы хотел прикрепить атрибут HTML "id" к каждому тегу "name" td следующим образом:

<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 ]

4 голосов
/ 13 марта 2012

Синтаксис довольно странный, но он работает . Ответ Джоша на правильном пути. Вот полный ответ, используя строку из моего текущего проекта. Это включает в себя синтаксис для использования более одного атрибута:

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 в приведенном выше примере) на случай, если вам нужно будет использовать данные из объекта этой строки.

3 голосов
/ 18 ноября 2009
column.For(c => c.ID).Attributes(c=> new Dictionary<string, object>(){{"id", c.ID}});
1 голос
/ 18 ноября 2009

Возможно, лучший способ отобразить указанный HTML-код - полностью отказаться от MVCContrib HTML.Grid и просто отобразить разметку с помощью foreach.

...