在 cshtml 檔案中,如果要將 C# 中的資料放入到下拉式選單 select 的 option 中,可以使用 foreach 的方式為下拉式選單填充資料:
或是使用 Html Helper:
註:上面的 select 的 id 和 name 會被設定為 select_id
那,要如何設定預設值呢? 使用 Html Helper 可以很簡單的在後面加上字串,就會是預設值:
呈現的 HTML 如下:
但是剛剛增加的「預設值」並沒有 value,而且會自動新增一筆,也就是如果預設值設定為「Value1」,在實際的下拉式選單中就會有兩個「Value1」,並且第一個的 value="",第二個的會是 value="key1"
經過一翻研究之後,最好的方式是使用第一種 foreach 的方式,並使用 C# 中的三元運算子做判斷:
實際顯示 HTML 頁面內容如下:
@{
var data = new Dictionary<string, string>
{
{ "Key1", "Value1" },
{ "Key2", "Value2" },
{ "Key3", "Value3" },
};
}
<select>
@foreach (var item in data)
{
<option value="@item.Key">@item.Value</option>
}
</select>
或是使用 Html Helper:
@Html.DropDownList("select_id", new SelectList(data, "Key", "Value"))
註:上面的 select 的 id 和 name 會被設定為 select_id
那,要如何設定預設值呢? 使用 Html Helper 可以很簡單的在後面加上字串,就會是預設值:
@Html.DropDownList("select_id", new SelectList(data, "Key", "Value"), "請選擇")
呈現的 HTML 如下:
<select id="select_id" name="select_id">
<option value="">請選擇</option>
<option value="Key1">Value1</option>
<option value="Key2">Value2</option>
<option value="Key3">Value3</option>
</select>
但是剛剛增加的「預設值」並沒有 value,而且會自動新增一筆,也就是如果預設值設定為「Value1」,在實際的下拉式選單中就會有兩個「Value1」,並且第一個的 value="",第二個的會是 value="key1"
<select id="select_id" name="select_id">
<option value="">Value1</option>
<option value="Key1">Value1</option>
<option value="Key2">Value2</option>
<option value="Key3">Value3</option>
</select>
經過一翻研究之後,最好的方式是使用第一種 foreach 的方式,並使用 C# 中的三元運算子做判斷:
<select>
@foreach (var item in data)
{
<option value="@item.Key" selected=@(item.Key == "Key3")>@item.Value</option>
}
</select>
實際顯示 HTML 頁面內容如下:
<select id="select_id" name="select_id">
<option value="Key1">Value1</option>
<option value="Key2">Value2</option>
<option value="Key3" selected="selected">Value3</option>
</select>
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com