ASP.NET MVC4 を使用してアプリケーションを作成していますが、AJAX と部分ビューに関する問題に直面しています。
現在、ビューのレンダリングがあります:
_createUser
アプリケーションでユーザーを作成するためのフォームを含むモーダルボックスである部分ビュー ( と呼ばれる) ( を介してレンダリング@{Html.RenderPartial("_createUser");}
)ListUsers
アプリケーションに現在登録されているユーザーを単純にレンダリングするアクションである部分アクション ( と呼ばれる) (@{Html.RenderAction("users");}
html テーブルでレンダリングされる)
ユーザーがボタンをクリックすると、含まれているモーダル ボックスが_createUser
jquery を介して表示されるため、ユーザーは新しいユーザーに関する情報を入力できます。彼がモーダル ボックスのボタンをクリックすると、フォームは 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/
それはかなり簡単で、本当にうまく機能します!