我是相當新的ASP.NET MVC和正在尋找幫助解決以下問題。可重複使用的DropDownList內容
我在視圖中有一個DropDownList控件。所選值將存儲在我的模型的整數字段中。
我的選擇是不要硬編碼標記中的文本和值。另外,我希望能夠在其他視圖的DropDownList控件中使用相同的文本和值列表。
我不知道是否需要創建一個類來初始化這些值的地方,或者我可能需要一個擴展方法。我可以用一些指導來解決這個問題。
我是相當新的ASP.NET MVC和正在尋找幫助解決以下問題。可重複使用的DropDownList內容
我在視圖中有一個DropDownList控件。所選值將存儲在我的模型的整數字段中。
我的選擇是不要硬編碼標記中的文本和值。另外,我希望能夠在其他視圖的DropDownList控件中使用相同的文本和值列表。
我不知道是否需要創建一個類來初始化這些值的地方,或者我可能需要一個擴展方法。我可以用一些指導來解決這個問題。
這是一個示例:
var apps = _webAppRepo.GetAll();
IList<SelectListItem> appSelectListItems = new List<SelectListItem>();
foreach (var item in apps) {
appSelectListItems.Add(new SelectListItem {
Text = item.ApplicationName,
Value = item.WebApplicationID.ToString()
});
}
ViewBag.AppSelectListItems = appSelectListItems;
這是你如何使用它您可以查看:
@Html.DropDownListFor(model =>
model.WebApplicationID,
(IEnumerable<SelectListItem>)ViewBag.AppSelectListItems
)
如果你想使用它沒有一個模型,這是這樣的:
@Html.DropDownList("Foo",
(IEnumerable<SelectListItem>)ViewBag.AppSelectListItems
)
有很多方法可以做到這一點,但是您可能會比在視圖模型中存儲這些值並將它們渲染到p年齡。我只是用Tuple
做爲一個例子:
public class MyViewModel
{
List<Tuple<int, string>> items_ = new List<Tuple<int, string>>();
public MyViewModel()
{
items_.Add(new Tuple<int, string>(1, "Item1"));
items_.Add(new Tuple<int, string>(2, "Item2"));
// etc
}
public List<Tuple<int, string>> Items { get { return items_; } }
}
你的控制器:
public class MyController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel());
}
}
您的看法:
@model MyNameSpace.MyViewModel
<select id="mySelect" name="mySelect>
@{foreach(Tuple<int, string> item in Model.Items){
<option value="@item.Item1">@item.Item2</option>
}}
</select>
當然,你也可以做一個推廣的方法來創建組合框以更有趣的方式:)
你應該填充你的DropDownList從數據庫表或從內存中讀取xml文件。
您應該可以使用相同的數據在視圖上填充任何其他ddl。
將使用部分視圖符合您的需求? – chardymcdennis
@chardymcdennis:我不這麼認爲。 –