2009-08-31 37 views
6

¿Cómo recupero el valor de un cuadro de texto en asp.net mvc para almacenar el valor en alguna variable?Obteniendo valor de un asp.net mvc textbox en submit click

Tengo un cuadro de texto como este <%=Html.TextBox("testbox") %> en la página de vista de índice.

que tienen un botón como éste <input type="submit" />

estoy usando la página de vista por defecto que viene cuando se abre una nueva aplicación MVC.

Gracias.

Respuesta

8

En su controlador;

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Search(FormCollection collection) 
{ 
    String g = collection["textFieldname"] 
} 

o puede usar;

TryUpdateModel(modelName); 

Lo anterior es la solución preferida. Si necesita más información sobre TryUpdateModel, publique un comentario y lo haré por usted.

EDIT:

En lugar de explicarlo simplemente me dejó mostrarle;

En su controlador:

public class MyFormViewModel 
{ 
    public string myInput {get; set;} 
} 

public ActionResult Search() 
{ 
    MyFormViewModel fvm = new MyFormViewModel(); 
    return View(fvm); 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Search(FormCollection collection) 
{ 
    MyFormViewModel fvm = new MyFormViewModel(); 
    TryUpdateModel<MyFormViewModel>(fvm); 

    string userInput = fvm.myInput; 
} 

Luego, en su punto de vista;

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<YOURNAMESPACE.Controllers.MyFormViewModel>" %> 

<%= Html.TextBox("myInput", Model.myInput) %> 

Tenga en cuenta dos cosas.

La página hereda de su modelo/clase definida en el controlador. No es el mejor lugar para ello, pero a modo de ejemplo servirá.

La otra cosa es que el cuadro de texto es el mismo nombre que la propiedad en el modelo. En este caso myInput.

Cuando el controlador hace UpdateModel, lo reflejará y hará coincidir el nombre de la caja de texto con el nombre del campo dentro de su modelo de vista de formulario.

¿Tiene sentido?

EDIT 2

Tampoco se olvide de envolver el botón y su campo en una;

<% using (Html.BeginForm()) {%> 
+0

Hola, Gracias por la respuesta ... no por favor dígame cómo tryupdatemodel (ModelName) tiene alguna relación con el cuadro de texto en la vista ... Gracias – Josh

+0

mirado a través de ella .... yo lo entiendo .. .. pero aquí ... <% = Html.TextBox ("myInput", Model.myInput)%>, Model.myInput se correlacionaría automáticamente con myFormViewModel.myinput? Creo que eso es lo que señaló que se resuelve automáticamente utilizando la reflexión obteniendo el nombre de clase relevante ... Ligeramente girando la cabeza porque lo llama "Model.MyInput" en la vista ... pero creo que probablemente escriba el código y funcionará – Josh

+0

Quiero decir cómo sabría qué modelo ... y dónde ... eso es lo que estaba pensando – Josh

Cuestiones relacionadas