2016-05-20 12 views
0

私はログインフォームをポップアップとして開き、以下のようにログインプロセスでAjax.beginformを挿入します。私は、ログインしたときにmvcのAJAX.BeginFormからの返信URL

@using (Ajax.BeginForm("Login", "Home", null, new AjaxOptions { OnSuccess = "OnSuccess", HttpMethod = "POST" }, 
    new { id = "Logonform", returnUrl = ViewBag.ReturnUrl })) 
{ 
    .... 
} 

は今、私は私が私達についてのページからポップアップを開いた場合、同様..「Homeまたは私達について」のようなものであるものは何でも、現在のページへお問い合わせページへのredirecをリダイレクトする必要があります。

[HttpPost] 
public ActionResult Login(LoginModel LM, string returnUrl) 
{ 
    if (ModelState.IsValid) 
    { 
     FormsAuthentication.SetAuthCookie(LM.UserName, false); 
     if (!string.IsNullOrEmpty(returnUrl)) 
      return Json(new { returnUrl = returnUrl }); 
     return RedirectToAction("Index", "Home"); 
    } 
    else 
    { 
     ModelState.AddModelError("UnSucessful", "User Name or Password is incorrect."); 
    } 
    return View(LM); 
} 

しかし、私はreturのURLを取得していなかったし、そのは、「ホーム」ページに行くたびに、下記のように

私のコントローラ。

ですので、どのように処理するか教えてください。

+0

あなたは、AJAXを使用します。 Ajaxは決して別のページにリダイレクトされません。 –

+0

それから私のシナリオに従ってどのように管理するのですか? –

+1

アヤックスの全体のポイントは、同じページにとどまることです。リダイレクトしたい場合は、通常の@Html.BeginForm()を使用してください。 –

答えて

0

あなたの行動からreturnUrlを読んで、それをJavaScriptでリダイレクトすることができます:

JavaScriptであなたの成功ハンドラに次のようなものを追加します。

Javascriptをを(あなたの成功ハンドラ内)

私はまた、Loginメソッドの残りの部分を、modelstateにエラーを追加するのではなくjsonを返すように変更し、ビュー。

更新

あなたonSuccess方法は次のようになります。

function OnSuccess(result) { 
    if (result.success == true) 
    { 
     window.location = result.returnUrl; 
    } 
} 
+0

私に例を挙げてください。 –

+0

@HimanshuNTatariya更新をご覧ください。 – hutchonoid

+0

ただし、returnUrlの設定方法は異なります。コントローラから手動で設定されていますか?私はreturnUrlを動的にしたい。 –

関連する問題