2014-02-18 66 views
4

如何覆蓋HTML選擇下拉列表的ID和名稱屬性?如何覆蓋選擇下拉列表的名稱和ID屬性

我在我的HTML下面的標記生成一個選擇下拉菜單:

@Html.DropDownListFor(
    m => m.CountryId, 
    new SelectList(Model.Countries, "Id", "Name", Model.CountryId), 
    "-- Select --", 
    new { @class = "form-control" } 
) 

以上從代碼的輸出是這樣的:

<select name="CountryId" id="CountryId" data-val-required="Country is required" data-val-number="The field CountryId must be a number." data-val="true" class="form-control"> 
    <option value="">-- Select --</option> 
    <option value="1">Country 1</option> 
    <option value="2">Country 2</option> 
    <option value="3">Country 3</option> 
    <option value="4">Country 4</option> 
</select> 

我看到它使雙方的名字和id屬性等於CountryId。我喜歡使用更多描述性名稱作爲我的標記,像國家。而且我還希望讓我的名稱和ID屬性具有相同的描述/名稱。所以,我試過如下:從代碼

@Html.DropDownListFor(
    m => m.CountryId, 
    new SelectList(Model.Countries, "Id", "Name", Model.CountryId), 
    "-- Select --", 
    new { id = "Countries", name = "Countries", @class = "form-control" } 
) 

輸出上面看起來是這樣的:

<select name="CountryId" id="Countries" data-val-required="Country is required" data-val-number="The field CountryId must be a number." data-val="true" class="form-control"> 
    <option value="">-- Select --</option> 
    <option value="1">Country 1</option> 
    <option value="2">Country 2</option> 
    <option value="3">Country 3</option> 
    <option value="4">Country 4</option> 
</select> 

爲什麼只是id屬性更改爲國家和名字在CountryId剩下什麼?

+0

'@ Html.DropDownListFor'用於您的視圖模型也將用作表單提交模型的概念,在這種情況下,您可以使用視圖模型使用表單發佈。在你的情況下,如果你只是想自定義表單發佈變量,使用'@ Html.DropDownList(「名稱」,新的SelectList(...),新的{id =「id」})' – tweray

回答

1

情況是這樣,因爲屬性需要大寫(Name):

@Html.DropDownListFor(
    m => m.CountryId, 
    new SelectList(Model.Countries, "Id", "Name", Model.CountryId), 
    "-- Select --", 
    new { id = "Countries", Name = "Countries", @class = "form-control" } 
) 

下面是一個answer到類似的問題,有需要的意見予以資本化提到了「名」。

+0

我想知道爲什麼'Name '工作和'名字'不? –

+0

好問題,我沒有解釋它。 –

相關問題