我有一個類型爲List的模型的視圖,我希望在頁面上放置一個下拉列表,該下拉列表包含列表中的所有字符串作爲下拉列表中的項目。我是MVC的新手,我該如何實現這一目標?ASP.NET MVC DropDownListFor與模型類型列表<string>
我嘗試這樣做:
@model List<string>
@Html.DropDownListFor(x => x)
而是拋出一個錯誤。任何幫助表示讚賞。
我有一個類型爲List的模型的視圖,我希望在頁面上放置一個下拉列表,該下拉列表包含列表中的所有字符串作爲下拉列表中的項目。我是MVC的新手,我該如何實現這一目標?ASP.NET MVC DropDownListFor與模型類型列表<string>
我嘗試這樣做:
@model List<string>
@Html.DropDownListFor(x => x)
而是拋出一個錯誤。任何幫助表示讚賞。
爲了使一個下拉列表,你需要兩個屬性:
在你的情況下,你只有一個字符串列表,它不能被利用來創建一個可用的下拉列表。
雖然對於數字2,你可以讓值和文本是相同的,你需要一個屬性來綁定。你可以使用助手的弱類型的版本:
@model List<string>
@Html.DropDownList(
"Foo",
new SelectList(
Model.Select(x => new { Value = x, Text = x }),
"Value",
"Text"
)
)
其中Foo
將DLL的名稱和默認的模型使用的粘合劑。所以生成的標記可能是這個樣子:
<select name="Foo" id="Foo">
<option value="item 1">item 1</option>
<option value="item 2">item 2</option>
<option value="item 3">item 3</option>
...
</select>
這是說的下拉列表中選擇一個更好的視圖模型如下:
public class MyListModel
{
public string SelectedItemId { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
然後:
@model MyListModel
@Html.DropDownListFor(
x => x.SelectedItemId,
new SelectList(Model.Items, "Value", "Text")
)
如果您想要在此列表中預先選擇某個選項,您只需將此視圖模型的SelectedItemId
屬性設置爲某個e的相應Value
在Items
集合中發表。
這不是工作,你如何得到控制器上的值Post ... SelectedItemId和Items都是null。 – Marc 2012-09-14 22:07:39
如果你有一個字符串類型的列表,你在下拉列表中選擇所需我做了以下內容:
List<string> ShipNames = new List<string>(){"A", "A B", "A B C"};
@Html.DropDownListFor(x => x.ShipNames, new SelectList(Model.ShipNames), "Select a Ship...", new { @style = "width:500px" })
這給下拉列表,像這樣:
<select id="ShipNames" name="ShipNames" style="width:500px">
<option value="">Select a Ship...</option>
<option>A</option>
<option>A B</option>
<option>A B C</option>
</select>
要獲得控制器帖子上的值;如果您正在使用具有字符串列表作爲屬性的模型(例如MyViewModel),因爲您已指定x => x。ShipNames您只需在方法簽名(模型內,因爲這將是串行/ deserialsed):
公衆的ActionResult MyActionName(MyViewModel模型)
如果你只是想訪問下拉列表在後,則變得簽名:
公衆的ActionResult MyActionName(字符串ShipNames)
我不確定這是否有效。對於後MyActionName(MyViewModel模型),選定項目將被綁定到什麼屬性。 ShipNames屬性僅包含可選值的列表。 – RayLoveless 2018-01-09 23:38:01
@ Html.Dr opDownListFor(x => yourInputVariable,Model)應該可以工作 – 2012-06-25 07:46:17