Tengo un problema extraño. Usamos C# para una aplicación ASP.NET MVC y JavaScript con jQuery y tablas de datos para la interfaz. En la interfaz, una parte del código se ve así:
table: "#restapiusers", ajax: { create: { url: "/restapiuser/RegisterUser" }, edit: { url: "/restapiuser/EditUser" } },La cuestión es que, aunque ambos puntos finales, RegisterUser y EditUser, pasan la carga útil de la misma manera, solo funciona EditUser.
[HttpPost] public async Task<JsonResult> RegisterUser(RestApi_UserModel user_short) { var param = HttpContext.Request.Form.Keys.FirstOrDefault();Cuando configuro un punto de interrupción en la línea anterior y muevo el cursor del mouse sobre "Formulario", dice que HttpContext.Request.Form lanzó una excepción del tipo 'System.InvalidOperationException'.
El comienzo de EditUser se ve exactamente igual y ahí no ocurre el error. Estoy desconcertado de cómo esto es posible.
En uno de los archivos de código había el siguiente texto:
// Defaults for DT-Editor for all future instances $.extend(true, $.fn.dataTable.Editor.defaults, { ajax: { create: { type: 'POST', //*** contentType: "application/json", //*** dataType: 'json', data: function (d) { d = JSON.stringify(Object.values(d.data)) console.info("Payload", d); return d }, }, edit: { type: 'POST', //contentType: "application/json", //dataType: 'json', data: function (d) { d = JSON.stringify(Object.values(d.data)) console.info("Payload", d); return d }, } }, idSrc: 'id', });Comenté las líneas que marqué con "***" y ahora funciona. Aparentemente, el tipo de contenido no debe ser "aplicación/json" para que los datos se pasen a través de la primera clave o la clave predeterminada del formulario.
Cambiar Request.Form a Request.Query
public async Task<JsonResult> RegisterUser(RestApi_UserModel user_short) { var param = HttpContext.Request.Query.Keys.FirstOrDefault(); }```