尝试删除这些RUNAT服务器标签。他们不应该在ASP.NET MVC中使用。您的选择也没有名称。如果输入元素没有名称,它将不会提交任何内容。此外,您的选项标签必须有这表明什么,如果选择该选项的值将被发送到服务器的值属性:
<form action="/Home/Create" method="post">
<p>
<select id="BLAHBLAH2" name="BLAHBLAH2">
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
</select>
<input type="submit" value="Change Year" />
</p>
</form>
但在ASP.NET MVC产生形式正确的方法是使用HTML佣工。根据您使用的视图引擎,语法可能会有所不同。下面是与Razor视图引擎为例:
@model MyViewModel
@using (Html.BeginForm("Create", "Home"))
{
<p>
@Html.DropDownListFor(x => x.SelectedYear, Model.Years)
<input type="submit" value="Change Year" />
</p>
}
在这里,您有一个强类型以某些给定视图模型:
public class MyViewModel
{
public string SelectedYear { get; set; }
public IEnumerable<SelectListItem> Years
{
get
{
return Enumerable
.Range(2010, 4)
.Select(x => new SelectListItem
{
Value = x.ToString(),
Text = x.ToString()
});
}
}
}
这是由一些控制器动作人口将呈现这样的观点:
public class HomeController: Controller
{
public ActionResult Index()
{
var model = new MyViewModel();
return View(model);
}
[HttpPost]
public ActionResult Create(MyViewModel model)
{
... model.SelectedYear will contain the selected year
}
}
是不是'runat =“server”'一个webforms的东西? –