您能帮我解决如何将所选选项的参数发送到控制器的问题吗?以下是我的观点:
<select>
@foreach(var item in Model.City)
{
<option>@Html.DisplayFor(x => item.Name)</option>
}
</select>
答案 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。