2

ASP.NET MVC4 を使用してアプリケーションを作成していますが、AJAX と部分ビューに関する問題に直面しています。

現在、ビューのレンダリングがあります:

  • _createUserアプリケーションでユーザーを作成するためのフォームを含むモーダルボックスである部分ビュー ( と呼ばれる) ( を介してレンダリング@{Html.RenderPartial("_createUser");})
  • ListUsersアプリケーションに現在登録されているユーザーを単純にレンダリングするアクションである部分アクション ( と呼ばれる) ( @{Html.RenderAction("users");}html テーブルでレンダリングされる)

ユーザーがボタンをクリックすると、含まれているモーダル ボックスが_createUserjquery を介して表示されるため、ユーザーは新しいユーザーに関する情報を入力できます。彼がモーダル ボックスのボタンをクリックすると、フォームは AJAX を介してコントローラーのアクションに送信されますModelState.IsValid

モデルが正しく、登録が正しい場合、ユーザーのリストのみを更新したいため、jqueryを使用して部分ビューで成功/エラーを処理する正しい方法がわからないため、ここで立ち往生しています. モデルは有効ではありませんか? によって発生したエラーでモーダル ボックスを更新したいですModelState

私の行動は:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Register( RegisterModel model )
    {
        if( ModelState.IsValid )
        {
            try
            {
                WebSecurity.CreateUserAndAccount( model.UserName, model.Password );
                WebSecurity.Login( model.UserName, model.Password );

                ViewBag.CreateUserSucceded = true;

                return RedirectToAction( "ListUsers" );
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError( "", ErrorCodeToString( e.StatusCode ) );
            }
        }

        return PartialView( "_createUser", model );
    }

私のjqueryもかなりシンプルです:

function SubmitCreateUserForm() {
    $.ajax({
        type: "POST",
        url: '@Url.Action("Register")',
        data: $("#createUserForm").serialize(),
        success: function (result, status, jqXHR) {
            ????
        }
    });
}

正しい方法は JSON を使用することであり、 and を返す代わりにActionResult、ステータス フィールドとユーザー リストまたは検証エラーに関連するデータを含む JSON を返し、ステータス フィールドを使用してメインのどの部分を知る必要があると思いますか?ビューを更新する必要があります。JSON結果とカミソリビューを混在させる方法が本当にわかりません。どんな手掛かり?

更新されました (現在、自分の質問に答えることができないか、8 時間待たなければなりません)。

わかりました、私はこのリンクで見つけたものを使用してしまいましたhttp://craftycodeblog.com/2010/05/15/asp-net-mvc-render-partial-view-to-string/

それはかなり簡単で、本当にうまく機能します!

4

0 に答える 0