0

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

4

4 回答 4

0

我会跳过很多 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)
{
    //...
}

请注意:

  • ACTION NAMECONTROLLER NAMEBeginForm帮手处。您将不得不在您的代码中修改它
  • select名称(“select”)和动作中的参数名称(“select”)。这不是巧合,而是约定俗成。MVC 使用nameattr 绑定数据
  • selected选项的属性将使其成为默认选项

问候

于 2012-07-30T05:39:11.987 回答
0

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

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。 即使是您尝试过的无效示例对于那些试图帮助您的人来说也很重要,因为他们正在为您花费宝贵的带宽。

于 2012-07-30T06:05:30.580 回答
0

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

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

这在视图中:

@Html.DropDownList("FieldName")
于 2012-07-30T12:46:21.677 回答
0
  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; }
    }
    
于 2012-07-30T13:25:44.870 回答