我是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。
答案 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]
装饰器,它应该工作