0

メイン ページがモデル データの検証に失敗したときに、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.RederPartialaction:にポスト バックします@{ 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)ます。

以前に誰かがこれに遭遇したことがありますか?解決方法についてのアイデアはありますか?

4

0 に答える 0