MVC下拉列表设置选定的值

时间:2015-09-21 16:10:11

标签: c# asp.net-mvc

嘿我试过跟随设置下拉列表的选定值。 在我的控制器中:

function Update () 
{
    if (Input.GetMouseButton(0)) 
    {
        timer += Time.deltaTime;
    }
    if ( Input.GetMouseButtonUp(0))
    {
        timer = 0;
    }
    if(timer > 1)
    {
        gameObject.SetActive(false);    
    }
}

在我的观点中:

u.Roles = new List<AspNetRole>();
foreach (var role in db.AspNetRoles)
{
    u.Roles.Add(role);
}

但仍然没有工作,我没有得到选定的值。调试时,我可以看到 @Html.DropDownList(Model.role.Id, new SelectList(Model.Roles, "Id", "Name"), htmlAttributes: new { @class = "form-control"}) 包含所选值。

另请注意,Id的类型为字符串,因为它是经过哈希处理的。 我做错了什么?

1 个答案:

答案 0 :(得分:4)

在MVC中显示DropDownList的方法很少。我喜欢以下方法。

注意:您需要在模型中收集 SelectListItem

模型

public class MyModel
{
    public int SelectedId { get; set; }
    public IList<SelectListItem> AllItems { get; set; }

    public MyModel()
    {
        AllItems = new List<SelectListItem>();
    }
}

控制器

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyModel();
        model.AllItems = new List<SelectListItem>
        {
            new SelectListItem { Text = "One",  Value = "1"},
            // *** Option two is selected by default ***
            new SelectListItem { Text = "Two",  Value = "2", Selected = true},
            new SelectListItem { Text = "Three",  Value = "3"}
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyModel model)
    {
        // Get the selected value
        int id = model.SelectedId;
        return View();
    }
}

视图

@model DemoMvc.Controllers.MyModel
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
    @Html.DropDownListFor(x => x.SelectedId, Model.AllItems)
    <input type="submit" value="Submit" />
}