mvc examples c# asp.net-ajax asp.net-mvc-2 routing actionlink

c# - examples - MVC Ajax.ActionLink no encuentra el método POST



html actionlink post (4)

Tengo un método POST declarado en mi controlador:

[AcceptVerbs(HttpVerbs.Post)] public ActionResult UpdateComments(int id, string comments) { // ... }

y un ActionLink en mi opinión:

<%= Ajax.ActionLink("update", "UpdateComments", new { id = Model.Id, comments = "test" }, new AjaxOptions { HttpMethod="POST", OnFailure="alert(''fail'');", OnSuccess = "alert(''success'');" })%>

Aparece un error "no encontrado" cuando intenta enrutar esta solicitud.

Si elimino la restricción POST del método UpdateComments en el controlador, funciona bien.

¿Qué me estoy perdiendo?


Parece que no le gustó la forma en que declaraba mis OnFailure y OnSuccess . Supongo que no pudo analizar mi objeto AjaxOptions por lo que HttpMethod="POST" la HttpMethod="POST" .

Lo hice funcionar cambiándolo a:

OnFailure="function() { alert(''fail''); }", OnSuccess="function() { alert(''success''); }"


Estoy aprendiendo ASP.MVC en este momento y tuve ese problema con mi Ajax.ActionLink, obtuve un método GET y no un método POST como debería haber sido. Entonces me doy cuenta de que no agregué la referencia de la biblioteca de scripts:

<script src=”/Scripts/MicrosoftAjax.js” type=”text/javascript”></script> <script src=”/Scripts/MicrosoftMvcAjax.js” type=”text/javascript”></script>

¡Después de agregar el script funcionó bien!


intente incluir

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>


FormCollection tiene una carpeta predeterminada asociada que siempre inicializa la colección y nunca deberías obtener un nulo. Es más probable que tenga una colección vacía cuando usa Ajax.ActionLink en contraste con cuando usa un botón de envío de formulario. Esto se debe a que el método ActionLink no PUBLICA ningún valor de formulario cuando realiza la solicitud AJAX. Esta publicación es la pregunta inquebrantable