2009-08-31 25 views
6

Come si recupera il valore di una casella di testo in asp.net mvc per memorizzare il valore su una variabile?Ottenere valore da una casella di testo di asp.net mvc al momento dell'invio, fare clic su

Ho una casella di testo come questa <%=Html.TextBox("testbox") %> nella pagina di visualizzazione indice.

Ho un pulsante mi piace questo <input type="submit" />

Sto utilizzando la pagina di visualizzazione predefinita che viene quando si apre una nuova applicazione MVC.

Grazie.

risposta

8

Nel controller;

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

oppure è possibile utilizzare;

TryUpdateModel(modelName); 

Quanto sopra è la soluzione preferita. Se hai bisogno di maggiori informazioni su TryUpdateModel, pubblica un commento e te lo spiego per te.

EDIT:

Invece di spiegare mi permetta semplicemente mostrare;

nel controller:

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; 
} 

Quindi secondo lei;

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

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

Avviso due cose.

La pagina eredita dal modello/classe definito nel controller. Non è il posto migliore per farlo, ma come un esempio lo farà.

L'altra cosa è che la casella di testo è il nome uguale alla proprietà nel modello. In questo caso myInput.

Quando il controller fa UpdateModel, riflette la cosa fuori e abbina il nome della casella di testo con il nome del campo all'interno del modello di visualizzazione del modulo.

Ha senso?

EDIT 2

Inoltre, non dimenticare di avvolgere il pulsante e il vostro campo in una;

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

Ciao, Grazie per la risposta ... non dirmi come tryupdatemodel (ModelName) ha alcuna relazione con la casella di testo per la vista ... Grazie – Josh

+0

guardato attraverso essa .... ho capito .. .. ma qui ... <% = Html.TextBox ("myInput", Model.myInput)%>, Model.myInput verrà automaticamente associato a myFormViewModel.myinput? Penso che sia quello che hai sottolineato che si risolve automaticamente usando il reflection ottenendo il nome della classe pertinente ... Giri leggermente la testa perché la chiami "Model.MyInput" sulla vista ... ma penso che probabilmente scriverò il codice e funzionerà. – Josh

+0

Voglio dire come saprebbe quale modello ... e dove ... questo è quello che stavo pensando – Josh

Problemi correlati