//url加密与解密
string res1 = HttpUtility.UrlEncode("7Z2K5Lgk/iI=");
//值是7Z2K5Lgk%2fiI%3d
string res2 = HttpUtility.UrlEncode(res1);
//值是: 7Z2K5Lgk%252fiI%253d string res3 = HttpUtility.UrlDecode(res2);
//值是7Z2K5Lgk%2fiI%3d
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"]

asp.net mvc url应用的更多相关文章

  1. ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL

    ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流量. ...

  2. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase

    原文地址:http://www.51csharp.com/MVC/882.html   ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL 引言-- 在初级篇中,我们 ...

  3. ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL

    ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流 ...

  4. 第2章 ASP.NET MVC(URL、路由及区域)

    * { font: 17px/1.5em "Microsoft YaHei" } ASPNET MVC URL.路由及区域 一.URL.路由及区域 一.      配置路由器 1. ...

  5. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC ...

  6. [转载]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC的Web程序中的Global文件来简单的重写路由.也介绍了它本身的局限性-依赖于路由信息中的键值对: 如果键值对中没有的值,我们无法将 ...

  7. asp.net MVC URL路由入门指南

    asp.net MVC 的URL路由是一个非常强大的功能,而且有个优点:强大单不复杂.然而,目前我在网上看到的相关资料,却都仅仅提供一些示例,仅通过这些示例,初学者基本上不可能明白为什么要这么配置,更 ...

  8. [转]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    本文转自:http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NE ...

  9. ASP.NET MVC——URL路由

    在MVC之前,ASP.NET假设请求的URL与服务器上的文件之间有关联,服务器接受请求,并输出相应的文件.而在引入MVC后,请求是由控制器的动作方法来处理的.为了处理URL,便引入了路由系统. 首先我 ...

随机推荐

  1. python matplotlib绘图

    import numpy as np import matplotlib.pyplot as plt from scipy.constants.constants import alpha from ...

  2. C# 语言习惯

    目录 一.使用属性而不是可访问的数据成员 二.使用运行时常量(readonly)而不是编译时常量(const) 三.推荐使用 is 或 as 操作符而不是强制类型转换 四.使用 Conditional ...

  3. 03 自学Aruba之2.4GHz及5GHz无线信道

    点击返回:自学Aruba之路点击返回:自学Aruba集锦 03 自学Aruba之2.4GHz及5GHz无线信道 1.  2.4GHz信道 在各国家授权使用的频段: 信道号 中心频率(GHz) 美国FC ...

  4. 自学Zabbix12.2 Zabbix命令-zabbix_get

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix12.2 Zabbix命令-zabbix_get 1. zabbix_get概念 ...

  5. 【洛谷5月月赛】玩游戏(NTT,生成函数)

    [洛谷5月月赛]玩游戏(NTT,生成函数) 题面 Luogu 题解 看一下要求的是什么东西 \((a_x+b_y)^i\)的期望.期望显然是所有答案和的平均数. 所以求出所有的答案就在乘一个逆元就好了 ...

  6. BZOJ 2901: 矩阵求和

    2901: 矩阵求和 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 411  Solved: 216[Submit][Status][Discuss] ...

  7. 洛谷 P1430 序列取数 解题报告

    P1430 序列取数 题目描述 给定一个长为\(n\)的整数序列\((n<=1000)\),由\(A\)和\(B\)轮流取数(\(A\)先取).每个人可从序列的左端或右端取若干个数(至少一个), ...

  8. Hadoop HDFS命令

    hadoop fs -mkdir  创建HDFS目录 # hadoop fs -mkdir /data Hadoop fs -ls  列出HDFS目录 # hadoop fs -ls /data ha ...

  9. JavaScript的面向对象原理之原型链详解

    一.引言 在16年的10月份,在校内双选会找前端实习的时候,hr问了一个问题:JavaScript的面向对象理解吗?我张口就说“JavaScript是基于原型的!”.然后就没什么好说的了,hr可能不知 ...

  10. Android开源框架Afinal第一篇——揭开圣女的面纱

    Android开源框架Afinal第一篇——揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...