2016-01-20 2 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) 

я получаю значение для siteId, но rangeId равно нулю. Что я делаю не так?

ответ

1

Если вы хотите использовать простой HTML выбор, то вам необходимо установить Имя атрибут вашего выбора ожидаемого имя паров в контроллере действий:

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

Но мое предложение использовать DropDownList помощник в любом случае.

+0

В настоящее время я притворяю свой лоб ладонью! Благодаря! –

0

Я считаю, что было бы лучше использовать HtmlHelper для DropDownList, например, так:

<div class="form-group"> 
    <label for="range">Range</label><br /> 
    @Html.DropDownList("RangeID", null, "Please select...", 
     new { @class = "form-control", id = "rangeID" }) 
</div> 

Затем внутри контроллера, вы можете заполнить DropDownList там, что-то вроде:

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

Смежные вопросы