2011-02-14 36 views
12

esto podría ser una pregunta fácil, pero para mí en este momento no está claro y tengo que ordenar las cosas en mi cabeza ... tal vez alguien me puede ayudar con eso =). ..jquery ajax formularios para ASP.NET MVC 3

Sé que MVC viene con Ajax Helpers. Sé que hay una biblioteca de Microsoft y también hay jquery. Sé que con MVC 3 introdujeron javascript discreto que agrega algunas etiquetas especiales a html para cleannes ...

pero ¿cómo se juega juntos?

Ejemplo: Deseo publicar un formulario remoto (vista parcial) por ajax para agregar comentarios a una publicación de blog. sin publicar toda la página de nuevo.

en mi Vista parcial ¿usaría Ajax.BeginForm() es esto entonces MvcAjax o Jquery? O debería usar Html.BeginForm() y registrar algo como $ .post en el evento click del formulario. Esto también tendría una alternativa de html simple si javascript está deshabilitado o no es compatible ....

¿O en general cuándo usar qué para publicar comentarios en una publicación de blog? ... y supongo que es correcto, que estoy publicando en la acción de creación del controlador de comentarios y usaría el JsonModelBinder para transformarlo en un modelo. Después de eso, devolvería a Json y lo agregaría a mi lista de comentarios ...

¿Es razonable esta razón para hacerlo?

Respuesta

30

Ajax.BeginForm() es esto entonces MvcAjax o Jquery?

Por defecto es jquery. Debe hacer referencia al script jquery.unobtrusive-ajax.js para que esto funcione.

O debería usar Html.BeginForm() y registrar algo como $ .post en el evento click del formulario.

Esa es una alternativa. Personalmente eso es lo que hago.

Supongo que es correcto, que estoy publicando en la acción crear del controlador de comentarios y usaría el JsonModelBinder para transformarlo en un modelo. Después de que volvería JSON y habría que añadir a mi lista de comentarios ...

El JsonModelBinder se ha introducido en ASP.NET MVC 3 y que le permite enviar una cadena JSON a una acción de controlador que será mapeado a un modelo de vista. Por ejemplo, si usted tiene la vista siguiente modelo:

public class PersonViewModel 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

y la siguiente acción:

public ActionResult Foo(PersonViewModel person) 
{ 
    ...  
} 

la manera tradicional para invocar en AJAX es:

$.ajax({ 
    url: '@Url.Action("foo")', 
    type: 'POST', 
    data: { name: 'john', age: 20 }, 
    success: function(result) { 
     // TODO: 
    } 
}); 

y en ASP.NET MVC 3 se podría enviar un JSON como parámetro de la petición que se une al parámetro PersonViewModel acción:

$.ajax({ 
    url: '@Url.Action("foo")', 
    type: 'POST', 
    contentType: 'application/json', 
    data: JSON.stringify({ name: 'john', age: 20 }), 
    success: function(result) { 
     // TODO: 
    } 
}); 
+2

'JSON.stringify' fue la parte que necesitaba ... THX! – Trev

+0

Tenga en cuenta que si está publicando en MVC con los datos que se obtuvieron del formulario al capturar un evento enviado, p. $ ("# some_form"). submit (function() {var data = $ (this) .serialize(); ... $ .ajax ({... El tipo de contenido del ejemplo de Darin debe eliminarse para que funcione en ese escenario. –

+0

Interesante! Voy a echarle un vistazo al JsonModelBinder. – Rushino

Cuestiones relacionadas