我的下拉选择值未发布到控制器

时间:2017-02-05 08:25:35

标签: c# asp.net-mvc razor

我是C#mvc的新手。 我有一个简单的表单,其中包含一个下拉列表,其值从ViewBag中填充

@using (Html.BeginForm("GetSliderValues", "Slider",FormMethod.Post))
{
    @Html.DropDownList("dvalue",(IEnumerable<SelectListItem>)ViewBag.names) 
    <input type="submit" name="submit" value="Submit" />
}

提交表单后,我试图将控制器中的选定值作为

[HttpPost]
public ActionResult GetSliderValues()
{
    ProviderName p = new ProviderName();
    p.Name = Request.Form["dvalue"];
    return View(p);   
}

但我没有收到任何价值。 p.Name始终设置为null。

1 个答案:

答案 0 :(得分:1)

请注意,您并未尝试POST数据,而是获取数据。这就是为什么你需要使用FormMethod.Get而不是FormMehod.Post。

然后,尝试创建一个新的SelectList而不是一个IEnumerable的SelectListItem。

在您的视图中:

@using (Html.BeginForm("GetSliderValues", "Slider",FormMethod.Get))
{
    @Html.DropDownList("dvalue",new SelectList(ViewBag.names))
    <input type="submit" name="submit" value="Submit" />
}

然后在你的控制器中添加一个字符串参数:

public ActionResult GetSliderValues(string dvalue)
{
    ProviderName p = new ProviderName();
    p.Name = dvalue;
    return View(p);   
}

最后删除[HttpPost]装饰器,它应该工作