如何在Asp.net MVC中选择下拉值

时间:2014-02-04 14:30:58

标签: c# asp.net asp.net-mvc asp.net-mvc-3 razor

您好我在Index页面中有Dropdown,用户需要选择列表。值来自数据库。我把这个下拉值带到了会话中,所以我可以把它带到Httppost。

以下是我在索引页面中的代码:

 var activitydropdown = orderdata.uspApp_ActivityPageReportname(Convert.ToInt32(newid)).ToList();

              List<SelectListItem> activitypage = new List<SelectListItem>();

              if (activitydropdown != null && activitydropdown.Count > 0)
                {
              foreach (var activityresults in activitydropdown)
              {
                  activitypage.Add(new SelectListItem
                  {
                      Text = activityresults.name,
                      Value = activityresults.id.ToString(),
                  });


                  }
              }


              ViewData["activitydropdown"] = activitypage;
              Session["activitydropdown"] = activitypage;

这是我的代码:

  @using (Html.BeginForm("Index", "Automation", new { step = "2" }, FormMethod.Post, new { id = "frmIndex" }))
                              {

                              @Html.DropDownList("DrpaActivity", ViewData["activitydropdown"] as List<SelectListItem>, "All", new { style = "margin-left:694px;margin-bottom:20px;", onchange = "submit();" }) 

现在,当用户从下拉列表中选择列表时,我需要将该文本带到我的httpost索引。现在在httpost索引中,如果我看到这段代码,则在调试模式下:

 var sessionlistautomation = Session["activitydropdown"];

我可以看到每个项目的文本和值以及选中的内容都是false。那么如何在这里选择从索引到httpost的文本,所以当用户从下拉列表中选择列表时,它会存储该文本值。

1 个答案:

答案 0 :(得分:1)

它将在您的请求中提供,即

Request["DrpaActivity"]

但是我强烈建议使用ViewModels,因为它们是类型安全的,更少的错误空间和更容易使用。

如果您创建视图模型,如下所示:

public class AViewModel
{
    public string DrpaActivity { get; set; }
    public List<SelectListItem> ActivitySelectList { get; set; }
}

在你的索引中你可以这样返回:

public ActionResult Index()
{
   var model = new AViewModel();

   // set the select list i.e.
   model.ActivitySelectList = // get from db etc


   return View(model);      

}

然后在您的视图中将模型声明在顶部

@model AViewModel

...

设置下拉列表:

@Html.DropDownListFor(m => m.DrpaActivity, Model.ActivitySelectList as List<SelectListItem>, "All", new { style = "margin-left:694px;margin-bottom:20px;", onchange = "submit();" })

然后,您可以按照以下方式在帖子中获取所选的下拉菜单:

[HttpPost]
public ActionResult Index(AViewModel model)
{
    var isValid = model.DrpaActivity;
    return View(model);
}