我正在尝试使用 HTML.DropDownListFor 动态生成标记的“值”属性,但我遇到了问题。我正在考虑硬编码一个for循环并插入原始HTML,但我很肯定有一种更简单的方法来做到这一点(?)
我有一个视图模型:
public class DSDCustomerViewModel
{
public IEnumerable<dsd_l_chain> chainBuild { get; set; }
public string Id_dsd { get; set; }
public string Owner { get; set; }
public IEnumerable<string> WFCategory { get; set; }
public IEnumerable<string> TransactionType { get; set; }
[etc etc etc]
chainBuild 属性来自我的数据库(使用 EF),我使用扩展方法为我的视图填充,如下所示:
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<table>
<tbody>
[etc etc]
<td colspan="1" rowspan="1">
Chain Name
</td>
<td colspan="1" style="vertical-align: top;">
@Html.DropDownListFor(model => model.cc_chainName, new SelectList(Model.cc_chainName), "Select ...")
</td>
<td rowspan="1" colspan="2" style="vertical-align: top;">
@Html.ValidationMessageFor(model => model.cc_chainName)
</td>
[etc etc]
cc_chainName EF 对象具有“Chain_Desc”、“Chain”、“Chain_Group”和“ID”等属性。
生成的 HTML 如下:
<select id="cc_chainName" name="cc_chainName"><option value="">Select ...</option>
<option>1ST STOP</option>
<option>3 RIVERS ICE CREAM SPCLTS</option>
<option>3RIVERS SALES TO NON-NAP CUSTS</option>
如何修改:
@Html.DropDownListFor(model => model.cc_chainName, new SelectList(Model.cc_chainName), "Select ...")
...以便生成的 HTML 代码将标记的“值”属性设置为 cc_chainName.ID?这样生成的 HTML 将如下所示:
<select id="cc_chainName" name="cc_chainName"><option value="">Select ...</option>
<option value="1">1ST STOP</option>
<option value="2">3 RIVERS ICE CREAM SPCLTS</option>
<option value="3">3RIVERS SALES TO NON-NAP CUSTS</option>
注意“值”标签包含来自 cc_chainName 模型的 ID
谢谢!