//url加密与解密string res1 = HttpUtility.UrlEncode(
"7Z2K5Lgk/iI=");
//值是7Z2K5Lgk/iI=
string res2 =
HttpUtility.UrlEncode(res1);
//值是: 7Z2K5Lgk%2fiI%3d
string res3 =
HttpUtility.UrlDecode(res2);
//值是7Z2K5Lgk/iI=
string res4 =
HttpUtility.UrlDecode(res3);//值是7Z2K5Lgk/iI=
using GiftWeb.Dao;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Mvc;
namespace GiftWeb.Controllers
{
public class LoginController : Controller
{
//
// GET: /Login/
public ActionResult Index()
{
//1.当session自动过期
string returnUrl =
Request.RawUrl;
string url =
string.Empty;
if (!Regex.IsMatch(returnUrl,
@"^/Login/Index"))
{
url =
HttpUtility.UrlEncode(returnUrl);
}
//获取退出时的ulr地址
url = Request[
"returnUrl"];
ViewBag.returnUrl =
url;
return View();
}
[HttpPost]
public ActionResult Index(
string loginname,
string password)
{
using (GiftDBEntities db =
new GiftDBEntities())
{
var userinfo = db.SysUserInfo.Where(u => u.LoginName == loginname && u.Password ==
password).FirstOrDefault();
if (userinfo ==
null)
{
ViewBag.msg =
"登录名或密码错误";
return View();
}
else
{
//获取退出时的ulr地址
string url = Request[
"returnUrl"];
//对url解密
string result =
HttpUtility.UrlDecode(url);
Session["sysuserInfo"] =
userinfo;
if (
string.IsNullOrEmpty(url))
{
return RedirectToAction(
"Index",
"TopicInfo");
}
else
{
return RedirectPermanent(result);
}
}
}
}
public ActionResult Logout()
{
//获取当前的url
string url = Request[
"returnUrl"];
//将url加密
string result =
HttpUtility.UrlEncode(url);
//让session过期
Session.Abandon();
//跳转到登录页面
return Content(result);
}
}
}
<script type="text/javascript">
function logout()
{
var url = "@Request.RawUrl";
alert(url);
$.post("/Login/Logout?returnUrl="+url, function (data) {
if (data != null)
{
window.location = "/Login/Index?returnUrl=" + data;
}
});
}
</script>
URL的获取很简单,ASP.NET通用:【1】获取 完整url (协议名+域名+虚拟目录名+文件名+参数)
string url=Request.Url.ToString();
【2】获取 虚拟目录名+页面名+参数:
string url=Request.RawUrl;(或 string url=Request.Url.PathAndQuery;)【3】获取 虚拟目录名+页面名:string url=HttpContext.Current.Request.Url.AbsolutePath;(或 string url= HttpContext.Current.Request.Path;)
【4】获取 域名:string url=HttpContext.Current.Request.Url.Host;
【5】获取 参数:string url= HttpContext.Current.Request.Url.Query;
【6】获取 端口:Request.Url.Port
二、当前controller、action的获取RouteData.Route.GetRouteData(this.HttpContext).Values["controller"]RouteData.Route.GetRouteData(this.HttpContext).Values["action"]或RouteData.Values["controller"]RouteData.Values["action"]如果在视图中可以用ViewContext.RouteData.Route.GetRouteData(this.Context).Values["controller"]ViewContext.RouteData.Route.GetRouteData(this.Context).Values["action"]或ViewContext.RouteData.Values["controller"]ViewContext.RouteData.Values["action"]
转载于:https://www.cnblogs.com/zoro-zero/p/4544939.html