2つのフォームの画面があります。1つはサイトへのログインを許可し、もう1つはftpへのログインを許可します。
ログインビューは、WelcomeScreenViewModel(結合モデル)で強く入力されます。各フォームは、強く型付けされた部分ビューです。
クラスの定義は次のとおりです。
public class LogOnViewModel
{
[LocalizedDisplayNameAttribute("username", typeof(MyLabels.labels))]
[Required]
public string UserName { get; set; }
[LocalizedDisplayNameAttribute("password", typeof(MyLabels.labels))]
[Required]
public string Password { get; set; }
}
public class FTPViewModel
{
[LocalizedDisplayNameAttribute("username", typeof(MyLabels.labels))]
[Required]
public string UserName { get; set; }
[LocalizedDisplayNameAttribute("password", typeof(MyLabels.labels))]
[Required]
public string Password { get; set; }
}
public class WelcomeScreenViewModel
{
public LogOnViewModel LogOnModel { get; set; }
public FTPViewModel FTPModel { get; set; }
}
メインページはWelcomeScreenViewModelを継承し、部分ビューを次のようにレンダリングします。
Html.RenderPartial( "Logon"、Model.LogOnModel);
Html.RenderPartial( "FTP"、Model.FTPModel);
私のコントローラーコード:
// To display blank login on load of page
public ActionResult Login(string language)
{
WelcomeScreenViewModel combined = new WelcomeScreenViewModel();
combined.FTPModel = new FTPViewModel();
combined.LogOnModel = new LogOnViewModel();
return View(combined);
}
// Called when clicking submit on first form
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Logon(string language, LogOnViewModel logon)
{
WelcomeScreenViewModel combined = new WelcomeScreenViewModel();
combined.FTPModel = new FTPViewModel();
combined.LogOnModel = logon;
if (!ModelState.IsValid)
{
ViewData["result"] = "Invalid login info / Informations de connexion incorrectes";
// This is the part I can't figure out. How do I return page with validation summary errors
return View(logon);
}
else
{
...
}
}
これまでのところ、私の問題は、ModelStateが無効な場合に何を返すかということです。検証サマリーエラーのあるページを返すにはどうすればよいですか?上に表示されたコードは、検証なしで部分ビューフォーム(マスター内ではない)を返すだけです。私は何が間違っているのですか?私はこの投稿を始めましたが、それは私を助けるのに十分なコードを示していませんでした。
どんな助けでもいただければ幸いです。ありがとう。