【问题标题】:How can I set the selected value of dropdownlist in asp.net mvc 4如何在 asp.net mvc 4 中设置下拉列表的选定值
【发布时间】:2015-05-21 21:55:26
【问题描述】:

我在控制器中有以下代码:

public ActionResult method(int? id){
    var list;
    var project;
    if(id.HasValue){
       list = repository.FindAsync(Identity.User.Id);
       project = list.FirstOrDefault(p => p.Id == id);
       ViewBag.List = list;
       ViewBag.SelectedValue = project.Id;
    }
    return View();
}

我在视图中有这个

<div>
  @Html.DropDownList("projectLists", ViewBag.list as List<SelectListItem>, new { @class = "class"})
</div>

如何使用 ViewBag.SelectedValue 来呈现具有该 ID 的项目的下拉列表。我需要一点帮助,因为我是 ASP.NET MVC 的新手

【问题讨论】:

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

将其设为 DropDownListFor,并在模型上有一个 SelectedItemID 属性以将其发布到。

【讨论】:

    【解决方案2】:

    您需要从一个视图模型开始来表示您想要显示/编辑的内容

    public class MyViewModel
    {
      public int SelectedProject { get; set; }
      public SelectList ProjectList { get; set; }
    }
    

    然后在GET方法中

    public ActionResult method(int? id)
    {
      IEnumerable<Project> projects = repository.FindAsync(Identity.User.Id);
      MyViewModel model = new MyViewModel()
      {
        SelectedProject = projects.FirstOrDefault(p => p.Id == id),
        ProjectList = new SelectList(projects, "Id", "Name")
      };
      return View(model);
    }
    

    并且在视图中(注意如果SelectedProject 的值与选项的值之一匹配,则在呈现视图时将选择该选项)

    @model yourAssembly.MyViewModel
    @using (Html.BeginForm())
    {
      @Html.DropDownListFor(m => m.SelectedProject, Model.ProjectList, "-Please select-", new { @class = "class" })
      <input type="submit" ../>
    }
    

    和 POST 方法

    public ActionResult method(MyViewModel model)
    {
      // model.SelectedProject contains the ID of the selected project
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      相关资源
      最近更新 更多