检索下拉列表中发布的值

时间:2013-02-25 06:49:34

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我有一个下载列表

{
   Select a title,
   Mr,
   Ms,
   Mrs
}

像这样初始化

//in model file
Mymodel mm=new Mymodel();
mm.Titles=new []
{
   new SelectListItem{....}
}

.....
//in view file and was set up inside a form

@Html.DropDownListFor(m=>m.Title, Model.Titles,"Select a title");

点击提交按钮后,我想在下拉列表中获得所选值。

1 个答案:

答案 0 :(得分:2)

您可以将提交表单的[HttpPost]控制器操作采用与参数相同的视图模型:

[HttpPost]
public ActionResult SomeAction(Mymodel model)
{
    // the model.Title property will contain the selected value here
}

此外,Titles集合也不会发送到您的HttpPost操作。这就是HTML的工作原理。提交表单时,仅发送<select>元素的选定值。因此,如果您打算重新显示相同的视图,则需要重新填充Titles属性。

例如:

[HttpPost]
public ActionResult SomeAction(Mymodel model)
{
    if (!ModelState.IsValid)
    {
        // there was a validation error, for example the user didn't select any title
        // and the Title property was decorated with the [Required] attribute =>
        // repopulate the Titles property and show the view
        model.Titles = .... same thing you did in your GET action
        return View(model);
    }

    // at this stage the model is valid => you could use the model.Title
    // property to do some processing and redirect
    return RedirectToAction("Success");
}