Buscamos por internet para así tenerte la solución para tu duda, en caso de dificultades puedes dejar tu duda y te respondemos con gusto.
Solución:
Desafortunadamente, Dictionary tiene problemas con Model Binding en MVC. Lee la historia completa aquí. En su lugar, cree un archivador de modelos personalizado para obtener el diccionario como parámetro para la acción del controlador.
Para resolver su requerimiento, aquí está la solución de trabajo:
Primero cree sus ViewModels de la siguiente manera. PersonModel puede tener una lista de RoleModels.
public class PersonModel
public List Roles get; set;
public string Name get; set;
public class RoleModel
public string RoleName get; set;
public string Description get; set;
Luego, tenga una acción de índice que servirá la vista de índice básica:
public ActionResult Index()
return View();
La vista de índice tendrá la siguiente operación JQuery AJAX POST:
Indexar publicaciones de acción a la acción AddUser –
[HttpPost]
public ActionResult AddUser(PersonModel model)
if (model != null)
return Json("Success");
else
return Json("An Error Has occoured");
Entonces, ahora, cuando se realiza la publicación, puede obtener todos los datos publicados en el parámetro de acción del modelo.
Actualizar:
Para asp.net core, para obtener datos JSON como su parámetro de acción, debe agregar el [FromBody]
attribute antes de su nombre de parámetro en la acción de su controlador. Nota: si usa ASP.NET Core 2.1, también puede usar el [ApiController]
attribute inferir automáticamente la [FromBody] fuente vinculante para los parámetros del método de acción compleja. (Doc)
Hay un par de problemas aquí. Primero, debe asegurarse de vincular su objeto JSON al modelo en el controlador. Esto se hace cambiando
data: JSON.stringify(usersRoles),
a
data: model: JSON.stringify(usersRoles) ,
En segundo lugar, no está vinculando tipos correctamente con su llamada jquery. si quitas
contentType: "application/json; charset=utf-8",
inherentemente se unirá de nuevo a un string.
Todos juntos, use el primer método ActionResult y la siguiente llamada jquery ajax:
jQuery.ajax(
type: "POST",
url: "@Url.Action("AddUser")",
dataType: "json",
data: model: JSON.stringify(usersRoles) ,
success: function (data) alert(data); ,
failure: function (errMsg)
alert(errMsg);
);
Estás enviando un array de string
var usersRoles = [];
jQuery("#dualSelectRoles2 option").each(function ()
usersRoles.push(jQuery(this).val());
);
Así que cambie el tipo de modelo en consecuencia
public ActionResult AddUser(List model)
Te mostramos las comentarios y valoraciones de los lectores
Recuerda algo, que tienes la capacidad de decir si diste con la contestación.