讓我爲我的問題設置一些背景。我建立一個模型,一個asp.net核心MVC應用程序類似於下面使用HTML Tag Helpers將行動態添加到MVC中的HTML表格
public class Employee {
public string Name { get; set; }
public List<Skill> Skills { get; set; }
}
public class Skill {
public string Name { get; set; }
public int ExpertLevel { get; set; }
}
現在我不想一個單獨的頁面添加Skills
。所以在我看來(創建,編輯等)Employee
,我想代表List<Skill>
作爲一個HTML表格。現在在桌子下面,我有幾個按鈕,我將用於Add Skill
和Remove Skill
。我CSHTML的相關部分看起來像下面
<table>
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Skills.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Skills.ExpertLevel)
</th>
</tr>
</thead>
<tbody>
@if (Model.Skills != null) {
@foreach (var item in Model.Skills) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
<input type="hidden" [email protected] />
<span [email protected] class="text-danger" />
</td>
<td>
@Html.DisplayFor(modelItem => item.ExpertLevel)
<input type="hidden" [email protected] />
<span [email protected] class="text-danger" />
</td>
</tr>}
}
</tbody>
</table>
像下面
<table>
<thead>
<tr>
<th>Skill</th>
<th>ExpertLevel</th>
</tr>
</thead>
<tbody>
<tr>
<td>
C#
<input type="hidden" data-val="true" data-val-required="Skill Name is required" id="item_Name" name="item.Name" value="C#" />
<span class="text-danger field-validation-valid" data-valmsg-for="item.Name" data-valmsg-replace="true" />
</td>
<td>
Yes
<input type="hidden" data-val="true" data-val-number="The field ExpertLevel must be a number." id="item_ExpertLevel" name="item.ExpertLevel" value="4.0" />
<span class="text-danger field-validation-valid" data-valmsg-for="item.ExpertLevel" data-valmsg-replace="true" />
</td>
</tr>
</tbody>
</table>
現在,我已經制定了如何添加行和使用JavaScript刪除行這剃刀代碼被轉換爲HTML,不同之處在於我使用普通的html構建行中的行(如下所示)。
var tdStr = '';
$(rowId).children('td').each(function() {
tdStr += '<td>' + $.trim($(this).children().first().val()) + '</td>';
});
var tr = $('<tr>' + tdStr + '</tr>');
$(tableId + ' > tbody:last-child').append(tr);
我不喜歡,我必須手動創建一個像數據-VAL-需要的class =「TEXT-危險場所驗證,有效」等標籤的幫手所有相關的屬性標籤將真正幫助我提高代碼的質量。
我的問題是如何「建立」我的錶行,而不必硬編碼我的模型DataAnnotations信息(如RequiredAttribute.ErrorMessage,DataTypeAttribute等)和其他標籤助手推斷從Linq.Expression
,這些信息到javascript
我正在玩template
標籤或「隱藏tr」,但無法取得多大進展。
我對asp.net核心,mvc,html和javascript很新。我正在使用這個項目來學習這些技術和正確的做法。