繁体   English   中英

如何在MVC3中为下拉菜单添加值?

[英]How to add values to dropdown in MVC3?

我想在表单中添加一个下拉列表,并在下拉列表中添加2个值useridusername ,并且我还希望在单击按钮时获得用户选择的值。 我是MVC的新手,到目前为止,我还没有从事下拉列表的工作,仅尝试了一些示例,但似乎没有任何方法可以按照我想要的方式工作。

我会跳很多MVC3概念。 如果您真的不是ASP.NET MVC的新手,那么应该看看一些教程

此代码应帮助您:

视图

    @using (Html.BeginForm("ACTION NAME", "CONTROLLER NAME"))
    {
        <select name="select">
            <option value="username" selected>User name</option>
            <option value="userid">User id</option>
        </select>
        <input type="submit" />
    }

行动

[HttpPost]
public ActionResult ACTIONNAME(string select)
{
    //...
}

请注意:

  • BeginForm帮助程序中的“ ACTION NAME和“ CONTROLLER NAME ”。 将不得不在您的代码上进行修改
  • select名称(“选择”)和操作参数的名称(“选择”)。 这不是巧合,而是一种约定。 MVC使用name attr绑定数据
  • 该选项的selected属性将使其成为默认选项

问候

看到其中一种方法是将列表作为绑定发送到模型属性中,对于值,可以将其绑定到另一个属性,例如:

public class YourModel 
{    
public List<UserList> OptionList { get; set; }
public String YourValue{get;set;}
}
public class UserList
{
   public String UserName{get;set;}
   public String UserId{get;set;}
}

@Html.DropDownListFor(model => model.YourValue, Model.OptionList, "")

在帮助器中,有用于指定值和文本的高位选项。

并记住:
这是StackOverflow。 即使是您尝试过的“不工作”示例,对于那些试图为您提供帮助的人也很重要,因为他们正在为您花费宝贵的带宽。

您不需要为每个视图创建新的模型类,只需将其放在控制器上:

ViewBag.FieldName = new SelectList(new List<SelectListItem>() {
    new SelectListItem { Value = "userid", Text = "User ID" },
    new SelectListItem { Value = "username", Text = "User name" }
});

并在此视图:

@Html.DropDownList("FieldName")
  1. 您需要创建一个SelectListItem的集合,例如:

     IEnumerable<SelectListItem> selectList = from c in areaListResponse.Item select new SelectListItem { Text = c.AreaName, Value = c.Id.ToString() }; 
  2. 将此selectList传递到您的视图:

     return View(selectList); 
  3. 在您的cshtml中:

     @model IEnumerable<SelectListItem> @Html.DropDownListFor(m => m.RequestAreaName, Model) 
  4. 如果需要完成的对象,则可能需要一个包装器类,例如:

      public class RaiseRequestModelWrapper { public IEnumerable<SelectListItem> GetModel { get; set; } public RaiseRequestModel PostModel { get; set; } } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM