在JsonResult Action方法中设置RedirectUrl

时间:2013-07-07 01:48:57

标签: c# asp.net-mvc-3

我正在尝试实现演示应用程序来学习ASP.NET MVC。应用程序有三个视图和相应的操作,并且还具有登录功能。

查看:

  1. Index.cshtml - 包含人员信息网格
  2. PersonInfoView.cshtml - 以查看模式显示人员信息
  3. PersonInfoEdit.cshtml - 允许用户编辑人员信息
  4. 默认路线:

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

    对于人物视图和编辑我创建了以下路线:

     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
           );
    

    因此,编辑人的网址将是“localhost / 1”&查看“localhost / view / 1”

    用户可以查看或编辑人员信息。如果用户状态已登录,则可以选择编辑(在索引中)。我在PersonInfoView.cshtml中有登录按钮(打开Jquery Dialog)(如果用户未登录),允许用户登录应用程序。

    如果用户通过PersonInfoView.cshtml页面登录应用程序,我想将用户重定向到编辑页面。

    登录用户操作返回JsonResult:

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

    如果用户通过PersonInfoView.cshtml登录应用程序,如何将RedirectUrl设置为人物编辑视图。

    感谢。

2 个答案:

答案 0 :(得分:1)

常见的情况是重定向到PersonInfoEdit,但用[Authorize]属性标记它。

如果用户已登录,他将获得编辑页面,否则他将被重定向到授权页面。成功授权后,他最终会被重定向到编辑页面。

答案 1 :(得分: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;
   });
})
相关问题