从MVC Web应用程序中的多个下拉列表中获取选定值

时间:2014-07-03 18:06:23

标签: asp.net-mvc drop-down-menu

我正在尝试构建一个具有多个下拉菜单的Web应用程序。我在我的模型中使用了枚举来填充这些下拉菜单,在我的视图中有一个来自提交按钮。我试图找出如何通过单击按钮从这些下拉列表中获取所有选定的索引。

我的控制器看起来像这样:

public class HomeController : Controller
{
    public ActionResult Index()
    {

        var model = new DropDownModel();


        return View(model);
    }
    [HttpPost]
    public ActionResult Index(DropDownModel model)
    {
        // Get the selected value
        int id = model.SelectedId;

        return View();
    }


    public ActionResult About()
    {

        return View();
    }
}

我的观点中的DropDown:

    @Html.DropDownListFor(x => x.SelectedId, Enum.GetNames(typeof(BTSWeb.Models.BillTemplate)).Select(e => new SelectListItem { Text = e }),"--BillTemplate--",new { style = "width:108px;font-size:90%;border-radius: 6.5px 6.5px 6.5px 6.5px" })
                  <span style="margin-left:1px"></span>  

    @Html.DropDownListFor(x => x.SelectedId, Enum.GetNames(typeof(BTSWeb.Models.ReadType)).Select(e => new SelectListItem { Text = e }),"--Read Type--",new { style = "width:70px;font-size:90%;border-radius: 6.5px 6.5px 6.5px 6.5px" })



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

和我的模特:

namespace BTSWeb.Models
{
public enum States { ANY, FL, TX, GA, NE };
public enum PaymentType { ANY, Email, Paper, No };

public class DropDownModel 
{

public int SelectedId { get; set; }



    }
}

1 个答案:

答案 0 :(得分:0)

问题是您使用DropDownModel作为视图模型。您将只能使用此方法填充selectedID。你需要做的就像是

public class ViewModel 
{

public int SelectedStateId { get; set; }
public int SelecPaymentTypeId { get; set; }


}

然后在你的控制器中你会传入

var viewModel = new ViewModel()
return View(ViewModel);

并且在你的视图中你会有

 @Html.DropDownListFor(x => x.SelectedStateId, Enum.GetNames(typeof(BTSWeb.Models.BillTemplate)).Select(e => new SelectListItem { Text = e }),"--BillTemplate--",new { style = "width:108px;font-size:90%;border-radius: 6.5px 6.5px 6.5px 6.5px" })
                  <span style="margin-left:1px"></span>  

    @Html.DropDownListFor(x => x.SelecPaymentTypeId , Enum.GetNames(typeof(BTSWeb.Models.ReadType)).Select(e => new SelectListItem { Text = e }),"--Read Type--",new { style = "width:70px;font-size:90%;border-radius: 6.5px 6.5px 6.5px 6.5px" })

最后你的控制器发布方法

   [HttpPost]
    public ActionResult Index(ViewModelmodel)
    {
        // Get the selected value
        int id = model.SelectedStateId;
        int id2 = model.SelecPaymentTypeId;

        return View();
    }