2

您能帮我如何将选定选项的参数发送到控制器吗?这是我的看法:

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

   }
</select>
4

2 回答 2

11

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

@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 官方网站上找到:

免费提供的课程

课程在每个页面的右侧边栏中

来自斯科特·汉塞尔曼

于 2012-09-13T12:01:34.690 回答
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" />
}

与其遍历 Model.City,不如查看另一个 Html 助手,例如 Html.DropDownList。

于 2012-09-13T12:06:00.307 回答