メイン ページがモデル データの検証に失敗したときに、Html.RenderPartial() アクションに予期しないポスト バックがあります。モデルの検証でエラーが発生しない場合、ページは予想されるコントローラー アクションに戻ります。誰かがこれに遭遇しましたか?彼らはどのような解決策を使用しましたか?
さらなる説明:
次のようにポストバックが設定された MVC .cshtml ビューがあります。
@using (Html.BeginForm("Profile", "User", FormMethod.Post))
{
// html code and stuff..
@{ Html.RenderAction("ImageUpload", "User"); }
<input type="submit" value="Save" />
}
「保存」ボタンをクリックすると、ページはメソッドUser/Profile
のセットアップとしてポストバックする必要があります: 。Html.BeginForm
@using (Html.BeginForm("Profile", "User", FormMethod.Post))
ポストバックを実行すると、ページは期待どおりに機能し、モデルの検証にエラーはありません...期待どおりに投稿さUser/Profile
れます。
ただし、メイン ビュー モデルで検証エラーが発生した場合、ページはHtml.RederPartial
action:にポスト バックします@{ Html.RenderAction("ImageUpload", "User"); }
。つまり、User/Profile
期待どおりに投稿するのではなく、に投稿しUser/ImageUpload
ます。
SNAPSHOT OF VIEWMODEL (ユーザー/プロファイルに提供されるモデル)
[Required]
[StringLength(1000, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 20)]
[DataType(DataType.Text)]
[Display(Name = "About Me* (Write up to 1000 characters about yourself)")]
public virtual string Summary { get; set; }
public ActionResult Profile(UserModel userModel)
{
if (ModelState.IsValid)
{
//DO STUFF
}
// If we got this far, something failed, redisplay form
return View(userModel);
}
ユーザーがプロパティ (最小長の検証パラメーター)に 20 文字未満を入力してモデルの検証を満たさない場合Summary
、ポスト バックはHtml.RenderPartial()
予期された ではなくに移動しHtml.BeginForm("Profile", "User", FormMethod.Post)
ます。
以前に誰かがこれに遭遇したことがありますか?解決方法についてのアイデアはありますか?