簡體   English   中英

在MVC3中創建一個簡單的下拉列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM