通常のビュー(レイアウトの@RenderBody())で表示される検証(サーバー側とクライアント側)のログインパーシャルビュー(ユーザー名、パスワード、送信ボタン)とモデル(一部のコントロールと送信ボタン)メインビューでのサーバー側の検証も部分ビューでの検証の原因になります
私の問題は、いずれかの私のビューでサーバ側の検証が行われたときに、ログインのhttppost機能が実行されるためログイン部分ビューも検証されることです。どうすればそれを止めることができますか?
ログイン・ビュー・コントローラ
[HttpGet]
public ActionResult LogOn()
{
return PartialView();
}
//
// POST: /Account/LogOn
[HttpPut]
public ActionResult LogOn(LogOnModel model)
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
FormsService.SignIn(model.UserName, model.RememberMe);
ViewBag.UserName = model.UserName;
}
else
{
ModelState.AddModelError("", Resources.Account.Account.LoginFailureText);
}
}
return PartialView(model);
}
とモデルコントローラ
public ActionResult MyModel()
{
ViewBag.DisplayThxMsg = false;
return View();
}
[HttpPost]
public ActionResult MyModel(Models.FeedbacksModel feedback)
{
if (ModelState.IsValid)
{
//do something
}
else{
//do another thing
}
return View(feedback);
}
ログインは既にフォームに表示されていますが、問題は表示され、DataAnnotationsモデルバインダは必須フィールドエラーを返します。魔法使いの送信ボタンをクリックするように指示する方法はありますか? –
レンダリングされたHTMLをチェックして、2つの別々のネストされていないフォームタグが作成されていることを確認しましたか? 1つのフォームはログイン用であり、別のフォームはフィードバック用です。重複したり、ネストされてはいけません。これがそうであれば教えてください。 – Zasz
関連するすべてのビューをhttp://pastebin.com/に貼り付けるか、どこかで見ることができます。人々はしばしばレイアウトファイルにフォームを入れ、部分的なビューにもう1つのフォームを入れます。そのような入れ子がおそらくエラーを引き起こしています – Zasz