Trate de no incluir esas variables de servidor runat. No deben usarse en ASP.NET MVC. Además, su selección no tiene un nombre. Si un elemento de entrada no tiene un nombre, no enviará nada. También sus etiquetas de opción deben tener atributos de valor que indica qué valor se envía al servidor si se selecciona esta opción:
<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>
Pero la forma correcta para generar formularios en ASP.NET MVC es el uso de ayudantes HTML. Dependiendo del motor de vista que esté utilizando, la sintaxis puede ser diferente. He aquí un ejemplo con el motor de vistas Razor:
@model MyViewModel
@using (Html.BeginForm("Create", "Home"))
{
<p>
@Html.DropDownListFor(x => x.SelectedYear, Model.Years)
<input type="submit" value="Change Year" />
</p>
}
aquí se tiene una vista inflexible hasta cierto punto de vista determinado modelo:
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()
});
}
}
}
que está poblada por alguna acción del controlador que hará que este punto de vista:
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
}
}
no es 'runat =" server "' a webforms cosas? –