我认为我必须做些傻事,但如果有人能指出我做错了什么,那就太好了!
我在Razor视图中有一个表单,如:
@using (Html.BeginForm("Index", "SiteKPIs", FormMethod.Get))
{
<table>
<tr>
<td style="margin-right: 25px;">Site</td>
<td>@Html.DropDownList("siteId", new SelectList(ViewBag.Sites, "SiteID", "SiteDisplayName"))</td>
</tr>
<tr>
<td>Range</td>
<td>
<select id="rangeId"><option value="0">test</option></select>
<input class="btn btn-primary btn-xs" type="submit" value="Go" />
</td>
</tr>
</table>
}
我的控制器操作的签名如下:
public ActionResult Index(int? siteId, int? rangeId)
我得到了siteId的值,但是rangeId为null。我做错了什么?
答案 0 :(得分:1)
如果你想使用普通的html选择,那么你需要在你的Controller Action中将你选择的Name属性设置为预期的param名称:
<select id="rangeId" name="rangeId"><option value="0">test</option></select>
但我的建议是使用DropDownList帮助程序。
答案 1 :(得分:0)
我认为最好使用HtmlHelper作为下拉列表,如下所示:
<div class="form-group">
<label for="range">Range</label><br />
@Html.DropDownList("RangeID", null, "Please select...",
new { @class = "form-control", id = "rangeID" })
</div>
然后,在您的控制器中,您可以在那里填充下拉列表,例如:
List<SelectListItem> options = new List<SelectListItem>();
options.Add(new SelectListItem { Text = "Test", Value = "0"});
// and so on...
然后,您可以在控制器中使用ViewBag并使其等于此列表,如下所示:
ViewBag.RangeID = options;