Ich habe eine Ansicht enthält Login und Anmeldeformular.Verwenden von Tuple zum Übergeben mehrerer Modelle
LoginAndRegister.cshtml Datei:
@model Tuple<Models.LoginViewModel, Models.RegisterViewModel>
@using (Html.BeginForm("Login", "Account", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(false)
// Form Login here
}
@using (Html.BeginForm("Register", "Account", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(false)
// Form Register here
}
Account Datei:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register([Bind(Prefix = "Item2")] RegisterViewModel model)
{
if (ModelState.IsValid)
{
// enter code here
}
// If we got this far, something failed, redisplay form
var tupleModel = new Tuple<LoginViewModel, RegisterViewModel>(null, model);
return View("LoginAndRegister", tupleModel);
}
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login([Bind(Prefix = "Item1")] LoginViewModel model, string returnUrl)
{
var tupleModel = new Tuple<LoginViewModel, RegisterViewModel>(model, null);
if (!ModelState.IsValid)
{
return View("LoginAndRegister", tupleModel);
}
}
I 2 Frage haben, ob ihr nicht könnten Sie mir helfen, etwas dagegen?
Als ich Modell übergeben (nur ein Element von Tupel) von der Steuerung zum Ansehen, ich habe es ändern <> Typ TUPLE und übergeben 1-Wert null ist. Ist dieser Weg richtig? Es funktioniert für mich, aber ich fürchte, dass mein Weg nicht stimmt.
Und dann, wenn das Modell ungültig ist (Beispiel: Werte Eingabe in Login-Formular ist ungültig), werden Fehlermeldungen in @ Html.ValidationSummary (false) binden. Aber es ist an 2 Stellen gezeigt (Anmeldung und Login-Formular). Wie behebe ich dieses Problem? https://gyazo.com/e9146059a6a098ee787565222d8dc744
Vielen Dank für Art
Scheint so, als ob Sie versuchen, etwas durch den Modellbinder zu schüren. Warum nicht einfach ein Modell erstellen, das alle benötigten Informationen enthält, und dieses weitergeben? –
Ja entweder ein großes ViewModel erstellen, das alle Eigenschaften enthält - oder ein neues ViewModel erstellen, das ein LoginViewModel und ein RegisterViewModel enthält – niico