【问题标题】:How Do I carry dropdown value selected in Asp.net MVC如何携带在 Asp.net MVC 中选择的下拉值
【发布时间】:2014-02-04 14:30:57
【问题描述】:

您好,我在索引页面中有下拉菜单,用户需要在其中选择列表。值来自数据库。我将此下拉值放入会话中,以便将其带到 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"];

我可以看到文本和值,并且每个项目的 selected 都是 false。那么如何将此处从索引中选择的文本携带到 httpost,因此当用户从下拉列表中选择列表时,它会存储该文本值。

【问题讨论】:

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


    【解决方案1】:

    它将在您的请求中可用,即

    Request["DrpaActivity"]
    

    不过,我强烈建议改用 ViewModel,因为它们类型安全、出错空间较小且更易于使用。

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

    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);
    }
    

    【讨论】:

    • 嗨,我知道了。现在我知道用户在下拉列表中选择的内容。你能告诉我如何根据这个 id 保存文本吗??
    • 我明白了。珍惜你的时间。我确实喜欢如果 id == id,然后选择 = true。这对我来说似乎很容易。
    • 不错,是的。您可以在 get 调用中设置选定的 Id,它会自动选择它。祝你好运。
    • “submit()”函数在哪里?模型如何通知更改?另外,您是否在自己的文件中定义模型?
    猜你喜欢
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多