2012-06-08 25 views
10

Soy nuevo en todas las cosas .NET. Tengo una página web muy básica con un formulario HTML. Quiero 'onsubmit' para enviar los datos del formulario desde la Vista al Controlador. He visto publicaciones similares a esta, pero ninguna tiene respuestas que impliquen la sintaxis Razor nueva. ¿Qué hago con 'onsubmit' y cómo accedo a los datos desde el Controlador? ¡¡Gracias!!ASP.NET MVC 3 Razor: Pasar datos de la vista al controlador

Respuesta

26

Puede ajustar los controles de vista que desea pasar en Html.Beginform.

Por ejemplo:

@using (Html.BeginForm("ActionMethodName","ControllerName")) 
{ 
... your input, labels, textboxes and other html controls go here 

<input class="button" id="submit" type="submit" value="Submit" /> 

} 

Cuando se pulsa el botón Enviar todo dentro de Beginform de que se presentará a su método de "ActionMethodName" del controlador "ControllerName".

en el lado del controlador puede acceder a todos los datos recibidos desde la vista de la siguiente manera:

public ActionResult ActionMethodName(FormCollection collection) 
{ 
string userName = collection.Get("username-input"); 

} 

colección objetivo anterior contendrá todas las entradas de entrada que hemos presentado de la forma. Se puede acceder a ellos por su nombre al igual que accedería a cualquier matriz: colección [ "bla"] o collection.Get ("bla")

También puede pasar parámetros a sus controladores directamente sin necesidad de enviar toda la página con FormCollection:

@using (Html.BeginForm("ActionMethodName","ControllerName",new {id = param1, name = param2})) 
{ 
... your input, labels, textboxes and other html controls go here 

<input class="button" id="submit" type="submit" value="Submit" /> 

} 

public ActionResult ActionMethodName(string id,string name) 
{ 
string myId = id; 
string myName = name; 

} 

O puede combinar ambos métodos y pasar parámetros específicos junto con Formcollection. Tu decides.

Espero que ayude.

editar: mientras escribía, otros usuarios lo referían a algunos enlaces útiles también. Echar un vistazo.

+0

Genial, muchas gracias! –

+0

Para la combinación también puede hacer esto: HttpContext.Request.Form ["index"]; de esta forma, no es necesario agregar FormCollection en los parámetros. –

0

Definir una forma de la siguiente manera:

@using (Html.BeginForm("ControllerMethod", "ControllerName", FormMethod.Post))

hará una llamada al método "ControllerMethod" en el controlador "ControllerName". En el método, puede aceptar un modelo u otros tipos de datos como entradas. Consulte el tutorial this para ejemplos que usan formularios y razor mvc.

Cuestiones relacionadas