Ah oui, j'ai dû faire exactement cela avant.La façon dont j'ai trouvé était de mettre un drapeau dans le ViewData détaillant le formulaire qui a été posté et ensuite j'ai créé ma propre méthode d'extension pour ValidationSummary.
Le code n'est pas avec moi en ce moment, donc je vais faire de mon mieux pour faire du code aérien maintenant, c'est évidemment juste un concept de la façon de le faire, donc prenez-le à sa valeur nominale. Pour commencer, j'utiliserais la même configuration que celle proposée par tvanfosson avec son 'EntryPageModel'.
Voir - note Html.MyValidationSummary
<% using(Html.BeginForm("NewAccount", "Account")) %>
<% { %>
<%= Html.MyValidationSummary("NewAccountForm") %>
<%= Html.TextBox("NewAccount.FirstName") %>
<%= Html.TextBox("NewAccount.LastName") %>
<%= Html.TextBox("NewAccount.Email") %>
<%= Html.Password("NewAccount.Password") %>
<%= Html.Password("NewAccount.ConfirmPassword") %>
<% } %>
<% using(Html.BeginForm("Login", "Account")) %>
<% { %>
<%= Html.MyValidationSummary("LoginForm") %>
<%= Html.TextBox("Login.Email") %>
<%= Html.Password("Login.Password") %>
<% } %>
Controller - note ViewData [ "PostedForm"]
public class Account : Controller
{
private EntryPageModel _viewModel;
public ActionResult NewAccount(FormCollection formValues)
{
try
{
//binding and validation for _viewModel.NewAccount
}
catch
{
ViewData["PostedForm"] = "NewAccountForm";
return View("RegisterAndLogin", _viewModel);
}
}
public ActionResult Login(FormCollection formValues)
{
try
{
//binding and validation for _viewModel.Login
}
catch
{
ViewData["PostedForm"] = "LoginForm";
return View("RegisterAndLogin", _viewModel); //You'll want to pass in a model
}
}
}
personnalisée extension html
namespace System.Web.Mvc
{
public static class HtmlExtensions
{
public static string MyValidationSummary(this HtmlHelper html, string formName)
{
if (!string.IsNullOrEmpty(html.ViewData["PostedForm"])
&& (html.ViewData["PostedForm"] == formName))
{
return html.ValidationSummary();
}
return "";
}
}
}
HTHS, Charles
Mais Html.ValidationSummary() sélectionne toutes les erreurs, quelle que soit la forme. – Pablo
Concernant le code, vous pouvez simplement regarder la connexion et créer des actions de compte d'un projet fraîchement créé. Maintenant j'ai une méthode logInOrCreateAccount() qui montre une vue avec deux formes, une pointant vers logIn() et l'autre vers createAccount(). – Pablo
Oh je vois. Oui, le résumé de validation n'est pas spécifique au formulaire. Vous pouvez placer ceci dans un emplacement central en haut de la page ou simplement l'omettre complètement. Il ne serait pas difficile d'écrire le vôtre qui prend un préfixe non plus. –