【问题标题】:How to pass value of selected dropdown list from View to Controller in MVC如何将选定下拉列表的值从视图传递到 MVC 中的控制器
【发布时间】:2017-06-15 19:44:48
【问题描述】:

您好,我需要一些关于 MVC 的帮助,因为这是该领域的新手。这是我的下拉列表代码,我只想在控制器中获取用户选择的值,以便我可以将该值传递给数据库中的表。这是来自.cshtml的代码

@Html.DropDownList("LogOffTime", new List<SelectListItem>
{
    new SelectListItem{ Text="One", Value = "30000" },
    new SelectListItem{ Text="Two", Value = "60000" },
    new SelectListItem{ Text="Three", Value = "180000" }
}, "Select Time") 

控制器:

 public ActionResult Index()
 {How to get the value from drop down list}

我只需要知道如何访问控制器中的值,即 30000/60000 等。如果用户没有选择任何东西,还需要检查是否不会传递任何值。也请纠正我。如果我的代码有任何问题。谢谢!

【问题讨论】:

  • 阅读一篇关于asp.net mvc的教程。
  • @ataravati 的评论并没有解决他的问题,也没有让他了解如何解决这个问题。
  • @UmarAftab 当我发表评论时,问题没有任何代码。

标签: asp.net-mvc


【解决方案1】:

我从我的工作中知道这个例子。希望对你有帮助

查看或DropDownList

@using(Html.BeginForm("getSelectedValue", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.DropDownList("LogOffTime", new List<SelectListItem>
    {
       new SelectListItem{ Text="One", Value = "30000" },
       new SelectListItem{ Text="Two", Value = "60000" },
       new SelectListItem{ Text="Three", Value = "180000" }
    }, "Select Time")

    <input type="submit" value="Submit" />
}

家庭控制器:

[HttpPost]
public ActionResult getSelectedValue()
{
    var selectedValue = Request.Form["LogOffTime"].ToString(); //this will get selected value
}

【讨论】:

  • 假设在哪里设置值。
  • @Zahir 我像您的示例一样对其进行了编辑。检查一下
  • 请注意,下拉列表必须位于按钮所在的 @using(Html.BeginForm("getSelectedValue", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) { ... } 块内,actionResult 应为 ActionResult。已提交修改。
【解决方案2】:

首先你需要一个模型。假设你的模型中有 Id 列。

 public ActionResult Index()
        {         
            ViewBag.MyList= new SelectList(db.MyTable.ToList(), "Id", "Name");    
            return View();
        }

在剃刀中

@Html.DropDownListFor(m => m.Id, ViewBag.MyList as SelectList, new { @class = "form-control" })

POST 控制器方法

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Index(MyModel model)
{
  int getmyid=model.Id;
}

【讨论】:

    【解决方案3】:

    创建模型

    public class dropdown {
    public int value {get;set;}
    }
    

    您需要像这样在下拉列表周围添加 using,添加一个提交按钮,该按钮将向控制器发布帖子-

        @using(Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
             {
             @Html.DropDownList(m=>m.value,"LogOffTime", new List<SelectListItem>
                {
                    new SelectListItem{ Text="One", Value = "30000" },
                    new SelectListItem{ Text="Two", Value = "60000" },
                    new SelectListItem{ Text="Three", Value = "180000" }
                }, "Select Time")
     <input type="submit" value="Submit" />
     }
    

    在你的控制器中

    public ActionResult AddItem(dropdown value) // you will get the value here
    {
      // do something 
    
    }
    

    【讨论】:

    • 谢谢,但我不确定在 lambda 表达式上实现时出错,它说“无法将 lambda 表达式转换为字符串..”
    • 请注意,BeginForm 行中的Index 实际上应该是控制器函数的名称AddItem
    【解决方案4】:

    很简单,你只需要了解一件事,对于下拉列表控件,视图表单只会将选定的值与下拉列表控件的名称一起作为键值对发布到控制器方法。所以你可以像下面这样简单地写来获得价值

    查看代码:

    @Html.DropDownList("LogOffTime", new List<SelectListItem>
    {
        new SelectListItem{ Text="One", Value = "30000" },
        new SelectListItem{ Text="Two", Value = "60000" },
        new SelectListItem{ Text="Three", Value = "180000" }
    }, "Select Time") 
    

    控制器代码:

     public ActionResult Index( string LogOffTime)  //LogOffTime is name of dropdownlist controll
    {
    
               //some  logic
    }
    

    注意:你应该把 ddcontrol 放在你的表单标签中,并使用提交来发布数据,或者你也可以用 jquery 的 change 事件来做同样的事情。

    希望以上信息对您有所帮助

    谢谢

    卡提克

    【讨论】:

      【解决方案5】:

      SelectLists 是人们(我)掌握的更具挑战性的概念之一。部分困惑是,当我们设置“Text”时,我们直观地认为“Value”是一个数字(int 或“Id”)。它不是。 “值”作为字符串从视图传递到控制器。然后,当表单提交给控制器时,您需要解析“Value”并将该值转换为 int。见下文:

      您的视图模型应该有一个“字符串”类型的属性来保存选定的值。

      视图模型

      public class dropdown {
      public string selectedvalue {get;set;}
      }
      
      

      查看

       @using(Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
               {
               @Html.DropDownListFor(m=>m.selectedvalue, new List<SelectListItem>
                  {
                      new SelectListItem{ Text="One", Value = "30000" },
                      new SelectListItem{ Text="Two", Value = "60000" },
                      new SelectListItem{ Text="Three", Value = "180000" }
                  }, "Select Time")
       <input type="submit" value="Submit" />
       }
      
      

      控制器

      public ActionResult Index(string selectedValue)  
      {
        int value = 0;
        bool valueIsInt = Int32.TryParse(selectedValue, out value); //this returns true if selectedValue can be converted to int and outputs the int as "value"
      
       if (valueIsInt)
      {
      
      selectedvalue = value        // if value is an int, set it to selectedvalue
      
      }
      
      //otherwise do something else
      
      }
      
      

      我知道这有点晚了,但希望这可以帮助像我一样在选择列表中苦苦挣扎的人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多