如何将选定下拉列表的值从View传递到MVC中的Controller

时间:2017-06-15 19:44:48

标签: asp.net-mvc

我需要一些关于MVC的帮助,作为这个领域的新手。这是我的下拉列表代码,我只想在控制器中获取用户选择的值,以便我可以将该值传递给db中的表。这是来自.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等。如果用户没有选择任何内容,还需要检查是否会传递任何值。请纠正我。如果我的代码有任何问题。谢谢!

5 个答案:

答案 0 :(得分:1)

创建模型

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

您需要在此下拉列表中添加使用,添加提交按钮,该按钮将向控制器发送帖子 -

    @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 

}

答案 1 :(得分:1)

首先你需要一个模型..假设你的模型中有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;
}

答案 2 :(得分: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" />
}

HomeController中:

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

答案 3 :(得分:0)

非常简单你只需要理解一件事,对于dropdownlist控件,视图表单只会将选定的值以及dropdownlist控件的名称作为控制器方法的键值对发布。所以你可以简单地写下面来获得价值

查看代码:

@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放在form标签中,并使用submit发布数据,或者也可以使用jquery的change事件执行相同的操作。

希望以上信息有用

由于

KARTHIK

答案 4 :(得分:0)

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

您的视图模型应具有“字符串”类型的属性,该属性将保存选定的值。

ViewModel

 @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

}

控制器

Sub Inventory_format()Dim cell As Range

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