[英]Creating a simple Dropdownlist in MVC3
我有一個文本框,用於接受工作角色的值。 但是,這僅限於數據庫方面的某些角色。 因此,使用下拉列表僅包含有效角色對我來說更有意義。 我正在嘗試進行設置,但是遇到了麻煩。
我在我的視圖中放置了以下代碼:
<p>
@Html.LabelFor(m => m.Role)
@Html.DropDownListFor(m=>m.Roles)
@Html.ValidationMessageFor(m => m.Role)
</p>
在我的模型中:
public List<string> Roles
{
get
{
return new {"Author","Underwriter" };
}
}
這不會編譯。 有什么想法我做錯了嗎?
為了創建一個下拉列表,您需要在視圖模型上有2個屬性:一個標量屬性(將保存所選值)和一個collection屬性(其中包含要顯示的可用項的列表)。
因此,與往常一樣,您首先要編寫一個視圖模型:
public class MyViewModel
{
[Required]
[DisplayName("Role")]
public string SelectedRole { get; set; }
public IEnumerable<SelectListItem> Roles
{
get
{
return new[]
{
new SelectListItem { Value = "Author", Text = "Author" },
new SelectListItem { Value = "Underwriter", Text = "Underwriter" }
};
}
}
}
然后一個控制器動作,它將這個模型傳遞給視圖:
public class HomeController: Controller
{
public ActionResult Index()
{
var model = new MyViewModel();
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
return Content("Thanks for selecting role: " + model.SelectedRole);
}
}
最后是一個對應的強類型視圖:
@model MyViewModel
@using (Html.BeginForm())
{
@Html.LabelFor(m => m.SelectedRole)
@Html.DropDownListFor( m => m.SelectedRole, Model.Roles, "-- Role --")
@Html.ValidationMessageFor(m => m.SelectedRole)
<button type="submit">OK</button>
}
將List<string>
添加到創建語句
public List<string> Roles
{
get
{
return new List<string> {"Author","Underwriter" };
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.