2013-03-14 19 views
7

Come posso ottenere valore dalla casella di testo "EmailList" e inviarlo a controler? Uso sempre webform, e questo è il mio primo contatto con mvc.passaggio valore da casella di testo a controller

Vista:

@Html.TextBox("EmailList") 
    @Html.Action("SendEmails") 

Controller:

public ActionResult SendEmails() 
    { 

     // some operations on EmailList 
    } 

EDIT


E se ho bisogno solo di aprire metodo semplice 'onclick'? Non azione. per esempio -

 public void SendEmails() 
     { 
      // some operations on EmailList 
     } 

risposta

4

Quindi, per ottenere il valore di nuovo nel controller che si sta andando a bisogno di emettere un primo POST di tutto quindi dovrai configurare l'azione del controller per un POST:

[HttpPost] 
public ActionResult SendEmails(string EmailList) 
{ 
} 

notare anche che ho aggiunto un parametro EmailList che si denomina esattamente come il controllo sul modulo. Poi abbiamo bisogno di assicurarsi che il proprio HTML è giusto setup, in modo che quando si costruisce il controllo form costruire in questo modo:

@Html.BeginForm("SendEmails", "{ControllerNameHere}", FormMethod.Post) 

e poi la tua casella di testo, anche lasciare da solo, dovrebbe funzionare bene.

+0

grazie, per favore guarda la modifica. – whoah

+0

E per favore dimmi, come impedire questo modulo dal pulsante "f5" o dalla pagina di ricarica? – whoah

+0

@whoah, vuoi impedire all'utente di ricaricare la pagina? Stai dicendo durante il submit? O stai dicendo completamente? –

1

avere un modello

public class EmailSubmitModel 
{ 
    public string EmailList {get; set;} 
} 

Nel vostro controller

public ActionResult SendEmails(EmailSubmitModel emailSubmitModel) 
{ 


} 
+0

grazie, per favore, guarda modifica. – whoah

3

Se si vuole passare il EmailList a un metodo allora si dovrebbe avere una forma circostante con l'e-mail textfield

@using (Html.BeginForm("","")) 
{ 
    @Html.TextBox("EmailList") 
    <input type="submit" id="emailSubmit" value="Submit Email" /> 
} 

Poi scrivere uno script per ignorare il comportamento modulo predefinito

<script type="text/javascript"> 
$(function() { 
     $("form").submit(function (e) { 

      e.preventDefault(); 
      var emailValue = $("#EmailList").val(); 
      $.ajax({ 
       url: '/Home/SendEmails', 
       data: { text: emailValue } 
      }); 
     }); 
    }); 
</script> 

Ora è possibile aggiungere un parametro al metodo in questo modo:

public void SendEmails(string text) 
     { 
      string email=text; 
      //or you can look into the Request.Form or Request.Querystring 
     } 

Spero che aiuti

Problemi correlati