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 "معرف" بكل علامة "اسم" على هذا النحو:
<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}});
لا تنتمي إلى StackOverflow