2016-01-20 44 views
0

我想我必须做一些愚蠢的,但如果有人能指出我在做什么错了,那将是伟大的!MVC格式表单元素不会控制器动作

我有一个剃刀形式查看,如:

  @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) 

我得到网站ID值,但rangeId为空。我究竟做错了什么?

回答

1

如果你想使用纯HTML选择,那么你需要设置你的选择预期PARAM名称的名称属性,在控制器动作:

<select id="rangeId" name="rangeId"><option value="0">test</option></select> 

但我的建议是使用DropDownList的帮手无论哪种方式。

+0

我正在用手掌拍我的前额!谢谢! –

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; 
+0

谢谢@James Lloyd,但我需要裸露的HTML元素。 –

+0

如果是这种情况@MikeWitt然后像其他人所建议的那样,您需要:name =“rangeId”。 – James