2008-10-28 5 views
1

J'essaie de créer un système de soumission de formulaire générique en utilisant ASP.NET MVC. Je voudrais que ce soit aussi facile que possible de créer des formulaires avec une vue de formulaire et une vue de "succès". En utilisant la méthode WebForms, c'était facile et cela pouvait être accompli avec des templates ou des multiviews. Avec MVC, je suis un peu coincé.Obtenir le comportement de type MultiView avec ASP.NET MVC

Voici ce que je voudrais imiter:

<% if (formNotSubmitted) { %> 
    <% Html.BeginForm(...); %> 
     <%= Html.TextBox("FirstName") %> 
     <%= Html.TextBox("LastName") %> 
     <input id='submit' type='submit' value='Submit' /> 
     <%= Html.ValidationSummary %> 
    <% Html.EndForm(); %> 
<% } else { %> 
    <p>Thank you!</p> 
    <p><img src='thanks.jpg' /></p> 
    <p>Other items here maybe.</p> 
<% } %> 

Idéalement, je voudrais utiliser Ajax, mais aussi fonctionner avec un POST droit. Je voudrais aussi envelopper d'une façon ou d'une autre pour éviter le code "if..else". Ce qui rend cela plus difficile qu'un formulaire Ajax ASP.NET MVC typique, c'est que le contrôleur ne saura pas ce que le message de succès/contenu est censé être. La plupart des démos que j'ai vues ont le contrôleur envoyer un message, mais j'ai besoin de ce code dans la vue.

Toute indication est appréciée.

Répondre

2

Vous pourriez avec le contrôleur

[AcceptVerbs("GET")] 
public ActionResult Signup() 
{ 
    // somecode that builds an html string 
     ViewData["form"] = htmlStringYouBuilt; 
} 

[AcceptVerbs("POST")] 
public ActionResult Login(string username, string password) 
{ 
    // etc 
} 

then in the view 
<%= ViewData["form"] %> 

Je suis en mesure d'utiliser avec succès cette technique.

+0

Malheureusement, cela ne fonctionnera pas pour moi parce que le contrôleur n'a aucune idée de ce qui devrait être affiché après avoir été appelé. Il enregistre simplement les données (et devrait signaler toute erreur s'il est trouvé). –

Questions connexes