2012-04-02 15 views

Antwort

3

Der Beitrag wird passieren, wenn Sie ein Html.BeginForm wie so verwenden:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult HandleForm(MyModel myModel) 
{ 
    // Do whatever you need to here. 

    return RedirectToAction("OtherAction", myModel); 
} 

public ActionResult OtherAction(MyModel myModel) 
{ 
    return View(myModel);  
} 

EDIT:

<% using(Html.BeginForm("HandleForm", "Home")) { %> 
    <fieldset> 
     <legend>Fields</legend> 
     <p> 
      <%= Html.TextBoxFor(m => m.Field1) %> 
     </p> 
     <p> 
      <%= Html.TextBoxFor(m => m.Field2) %> 
     </p> 
     <p> 
      <input type="submit" value="Submit" /> 
     </p> 
    </fieldset> 
<% } %> 

Ihre Controller-Aktion dann eine Umleitung durchführen kann: Das oben gezeigte Beispiel Jetzt binden Sie mit dem folgenden Modell und können zwischen Aktionen übergeben werden:

public class MyModel 
{ 
    public string Field1 { get; set; } 
    public string Field1 { get; set; } 
} 
+0

Wenn legt die viele Felder enthält. Gibt es ein Eingabeobjekt? –

+0

Ich habe meine Antwort geändert, um zu zeigen, wie Eingabewerte zurück an die Controller-Aktion übergeben werden. – CAbbott

1

Der folgende Code veranschaulicht, wie ein Benutzer nach dem Senden eines Formulars an eine andere Aktion umgeleitet wird.

Wenn Sie die übermittelten Daten für die Aktionsmethode, auf die Sie umleiten möchten, beibehalten möchten, müssen Sie sie im Objekt TempData speichern.

public class HomeController : Controller 
{ 
    [HttpGet] 
    public ActionResult Index() 
    { 
     // Get the e-mail address previously submitted by the user if it 
     // exists, or use an empty string if it doesn't 
     return View(TempData["email"] ?? string.Empty); 
    } 

    [HttpPost] 
    public ActionResult Index(string email) 
    { 
     // Store the e-mail address submitted by the form in TempData 
     TempData["email"] = email; 

     return RedirectToAction("Index"); 
    } 
} 

Ihre Index Ansicht würde wie folgt aussehen:

@using (Html.BeginForm("Index", "Home")) 
{ 
    @* Will populate the textbox with the previously submitted value, if any *@ 
    <input id="email" type="email" name="email" value="@Model" /> 

    <button type="submit">Submit</button> 
} 
Verwandte Themen