如何将选定的选项参数发送到MVC中的控制器?

时间:2012-09-13 11:53:17

标签: asp.net-mvc-3

您能帮我解决如何将所选选项的参数发送到控制器的问题吗?以下是我的观点:

<select>
   @foreach(var item in Model.City)
   {      
      <option>@Html.DisplayFor(x => item.Name)</option>

   }
</select>

2 个答案:

答案 0 :(得分:10)

所以,在你看来,你会有类似的东西:

@model MyModel

@using(Html.BeginForm()) {

  <select id="City" name="City">
    @foreach(var c in Model.City)
    {
      <option value="@c.Id">@c.Name</option>
    }
  </select>

  <input type="submit" value="Post data to controller" />

}

在您的控制器中,您所要做的就是使用相同名称但具有不同签名的操作:

或者:

[HttpPost]
public ActionResult Edit(string City) { ... }

或者您可以传递整个模型

[HttpPost]
public ActionResult Edit(MyModel model) { 
  string city = model.City;
}

但是有了这样的问题,我建议你花一些时间来使用PluralSight中的免费ASP.NET课程,你可以在ASP.NET oficial网站上找到它:

免费课程

课程位于每个页面的右侧边栏

来自 Scott Hanselman

答案 1 :(得分:0)

看起来你错过了表单html帮助器。试试这个(如果你需要指定一个不同的ActionResult,它会假设你要在BeginForm帮助器上读取Controller / Index动作):

@using (Html.BeginForm())
    <select>
    @foreach(var item in Model.City)
    {

        <option>@Html.DisplayFor(x => item.Name)</option>    
    }
    </select>

    <br />

    <input type="submit" value="Search" />
}

您应该查看另一个Html帮助程序,如Html.DropDownList,而不是遍历Model.City。