0

ASP.NET MVC を学習するデモ アプリケーションを実装しようとしています。アプリケーションには 3 つのビューと対応するアクションがあり、ログイン機能もあります。

ビュー:

  1. Index.cshtml - 個人情報グリッドが含まれています
  2. PersonInfoView.cshtml - ビュー モードで個人情報を表示する
  3. PersonInfoEdit.cshtml - ユーザーが個人情報を編集できるようにする

デフォルトルート:

  routes.MapRouteWithName(
            "Default", // Route name
            "", // URL with parameters
            new { controller = "Person", action = "Index" } // Parameter defaults
        );

Person ビューと Edit については、次のルートを作成しました。

 routes.MapRoute(
          "ViewPerson", // Route name
          "View/{PersonId}", // URL with parameters
          new { controller = "Person", action = "PersonInfoView", PersonId= "" } // Parameter defaults
      );



 routes.MapRoute(
           "EditPerson", // Route name
           "{PersonId}", // URL with parameters
           new { controller = "Person", action = "PersonInfoEdit", PersonId= "" } // Parameter defaults
       );

したがって、編集者の URL は「localhost/1」、ビューの URL は「localhost/view/1」になります。

ユーザーは、個人情報を表示または編集できます。ユーザーステータスがログインしている場合に使用できるオプション編集(インデックス内)。ユーザーがアプリケーションにログインできるPersonInfoView.cshtml(ユーザーがログインしていない場合)にログインボタン(Jqueryダイアログを開く)があります。

ユーザーが PersonInfoView.cshtml ページを介してアプリケーションにログインした場合、ユーザーを編集ページにリダイレクトしたいと考えています。

ログイン ユーザー アクションは JsonResult を返します。

return Json(new { res = 1, RedirectUrl = "" }, JsonRequestBehavior.AllowGet);

ユーザーが PersonInfoView.cshtml 経由でアプリケーションにログインする場合、RedirectUrl を個人編集ビューに設定するにはどうすればよいですか。

ありがとう。

4

2 に答える 2

1

一般的なシナリオは、PersonInfoEdit にリダイレクトすることですが、[Authorize]属性でマークします。

ユーザーがログインしている場合は編集ページが表示され、ログインしていない場合は認証ページにリダイレクトされます。認証が成功すると、最終的に編集ページにリダイレクトされます。

于 2013-07-07T02:23:35.647 に答える
0

Url.Action を使用できます

public ActionResult PersonInfoView()
{
   var personId = 1;
   var redirectionUrl = Url.Action("PersonInfoEdit", "Person", new { PersonId = personId });
   return Json(new { res = 1, RedirectUrl = redirectionUrl }, JsonRequestBehavior.AllowGet);
}

クライアント側リダイレクト用の JavaScript

$(function(){
   $("#login").click(function(){
       $.post('@Url.Action("PersonInfoView","Person")',function(data){
           if(data.res == 1)
           {
               location.href = data.RedirectUrl;
           }
       });
       return false;
   });
})
于 2013-07-08T13:28:45.697 に答える