我正在尝试实现演示应用程序来学习ASP.NET MVC。应用程序有三个视图和相应的操作,并且还具有登录功能。
查看:
默认路线:
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设置为人物编辑视图。
感谢。
答案 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;
});
})