MVCContrib ، html.grid: كيف يمكنني إرفاق معرف قائم على الصف بعلامة TD؟

StackOverflow https://stackoverflow.com/questions/1752146

سؤال

هذا هو رمز العرض الحالي الخاص بي:

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

أرغب في إرفاق سمة HTML "معرف" بكل علامة "اسم" على هذا النحو:

<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 خاصية على متغير Lambda (x في المثال أعلاه) في حال كنت بحاجة إلى استخدام البيانات من كائن هذا الصف.

column.For(c => c.ID).Attributes(c=> new Dictionary<string, object>(){{"id", c.ID}});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top