2016-01-20 45 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