Cómo obtener el valor seleccionado de un desplegable en la clase controladora con ASP.NET Core 2.2 MVC.
Tengo este marcado HTML:
<p>
Buscar por columna:
@using (Html.BeginForm("getSelectedValue", "Index", FormMethod.Post, new { enctype = "application/x-www-form-urlencoded" }))
{
@Html.DropDownList("ddlFilterColumns", new List<selectlistitem>
{
new SelectListItem { Text = "Seleccionar columna", Value = "1", Selected=true},
new SelectListItem { Text = "Alias", Value = "2"},
new SelectListItem { Text = "Nombre del departamento", Value = "3"}
}, "")
<span> Buscar :</span> @Html.TextBox("SearchString", ViewBag.CurrentFilter as string)
<input type="submit" value="Buscar">
}
</selectlistitem></p>
y este es mi código del controlador:
[HttpPost]
public string getSelectedValue()
{
// esto obtendrá el valor seleccionado
var selectedValue = Request.Form["ddlFilterColumns"].ToString();
return selectedValue;
}
Cuando la página se redirige a la página del departamento, obtengo un error:
InvalidOperationException: Tipo de contenido incorrecto: Microsoft.AspNetCore.Http.Features.FormFeature.ReadForm()
Microsoft.AspNetCore.Http.Internal.DefaultHttpRequest.get_Form()
EF_Crud_Samples.Controllers.DepartmentsController.getSelectedValue() en DepartmentsController.cs
var selectedValue = Request.Form[“ddlFilterColumns”].ToString();EF_Crud_Samples.Controllers.DepartmentsController.SortDepartmentData(List
depts, string sortField, string currentSortField, string currentSortOrder) en DepartmentsController.cs
+ switch(getSelectedValue().ToString())
EF_Crud_Samples.Controllers.DepartmentsController.Index(string sortField, string currentSortField, string currentSortOrder, string currentFilter, string SearchString, NullablepageNo) en DepartmentsController.cs
Por favor, ayúdame con esta situación.
davy.ai
El mensaje de error indica que el tipo de contenido que se está enviando al servidor es incorrecto.
Para solucionar este problema, puedes intentar cambiar el atributo “enctype” en el formulario HTML a “multipart/form-data” en lugar de “application/x-www-form-urlencoded”, de la siguiente manera:
Alternativamente, puedes intentar acceder a los datos del formulario utilizando un objeto de modelo en el método del controlador en lugar de acceder directamente a la colección Request.Form. Aquí tienes un ejemplo:
Donde SelectedValueViewModel es un modelo de vista simple que contiene una propiedad para el valor seleccionado de la lista desplegable:
Entonces, en el formulario HTML, cambiarías el código para usar un objeto de modelo de la siguiente manera: