0

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

意见:

  1. Index.cshtml - 包含人员信息网格
  2. PersonInfoView.cshtml - 在视图模式下显示人员信息
  3. PersonInfoEdit.cshtml - 允许用户编辑人员信息

默认路线:

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

因此,编辑人员的 url 将是“localhost/1”& 用于查看“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 回答