今天在asp.net mvc网站项目的前台页面里写一段js代码时,想要跳转到某个url,例如

location.href="xxxx?"+"id="+id+"&keyword="+keyword;

其中id和keyword都是后台Controller的Action方法需要的参数,从html的input文本框的值,奇怪的是当在keyword文本框输入"#1作品"时,发现传到后台时keyword的值为null,前端明明传的是"#1作品",怎么到了后台成了null?

另外一类似的方法中,用JQuery的ajax发送post请求时,也向后台发送了参数id="#1作品",后台却能正确接收到"#1作品"。

上网查了才知道,当url中出现"#"号时,"#"及其后面的字符串都会被忽略,不会被发送到服务器,因为浏览器将一个url视为一个html页面,而"#str"表示该页面的id为str的块(section),如<div id="str">......</div>,请求被发送到服务器,然后服务器把页面发送到浏览器,并被浏览器解析之后,浏览器在将该页面自动滚动到id为str的section。

因为请求的是页面,所以浏览器不会把"#"后面的当成参数发送到服务器,因此服务器收到的该参数值为null.

但是服务器又需要这个参数,怎么办呢,答案是对参数进行转义就行了,利用js的escape()函数即可转义:

location.href="xxxx?"+"id="+id+"&keyword="+escape(keyword);

这样"#"会被转义成"%23",而后台的cs代码会自动将其恢复成转义之前的"#"。

而用JQuery发送post类型的ajax请求时,因为参数被封装进数据体,并没有放在url中,因此不需要转义也会原原本本地发送给服务器,转义之后反而得不到"#"了,而是变成了"%23"。

url中出现井号("#")的问题的更多相关文章

  1. ASP.NET MVC Url中带点号出现404错误的解决方案

    由于项目需求,项目的路由设计如下 config.Routes.MapHttpRoute( name: "Get/Put Sku", routeTemplate: "api ...

  2. zencart分类页产品页去掉url中的id号

    最近公司新上的网站被seo指出要修改url,去掉url中产品id.由于我们用的是zencart框架,装了 Ultimate SEO URLs 插件,所以在网上应该有这方面的资料,本文主要参考资料: 原 ...

  3. js获取url 中的值,并跳转相应页面

    实现方法:一:获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET1.函数: <Script lang ...

  4. 将网址url中的参数转化为JSON格式的两种方法

    在我们进入主题前,我先先看下获取网址URL的方法: window.location.href // 设置或获取整个URL为字符串 window.location.hash // 设置或获取href属性 ...

  5. JS获取url中query_str JavaScript RegExp 正则表达式基础详谈

    面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.window.location.href(设置或获取整个 URL ...

  6. URL中字符的含义

    目录 URL中的特殊字符 #号的作用 URL中的特殊字符 我们经常会看到URL中有一些特殊的字符,比如 #,?,& ,/ ,+ 等.那么,它们的含义是什么呢? 特殊含义 十六进制 + 表示空格 ...

  7. URL中#(井号)的作用(转)

    2010年9月,twitter改版. 一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为 http://twitter.com/username 改版后,就变 ...

  8. URL 链接中 井号#、问号?、连接符& 分别有什么作用?

    在一个 URL 中可以包含很多的内容,其中不仅仅是包含 26 个英文字母,10 个罗马数字,中文汉字,还可以拥有井号“#”.问号“?”.连接符“&”等三种最常见的符号,那么这些符号在网站中都有 ...

  9. URL中的hash(井号)

    1.#的含义 #代表网页中的一个位置,其右边的字符,就是该位置的标识符.比如 http://www.example.com/index.html#print 就是代表index.html中的print ...

随机推荐

  1. gl_ClipDistance

    http://github.prideout.net/clip-planes/ http://www.opengl.org/wiki/Built-in_Variable_(GLSL) http://w ...

  2. ecshop 的transport.js 与jqueyr冲突

    1111 {insert_scripts files='common.js,global.js,transport.js'} <script type="text/javascript ...

  3. 表达式拼接Expression<Func<IEntityMapper, bool>> predicate

    /// <summary> /// 重写以筛选出当前上下文的实体映射信息 /// </summary> protected override IEnumerable<IE ...

  4. 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进

    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二 ...

  5. centos 7.0VI命令 和固定内网IP 查看外网IP

    VI 命令的使用 直接例子 省的忘记 编辑网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-enp2s0 不知道那个网卡 ip addr命令 PS:cent ...

  6. Sqlserver2008 表分区教程

    先声明..Sql2008只有企业版才能够搞这个表分区.其他版本请自觉更改.. 哥在这里费了很长时间劲..结果还是老老实实的重装.. 表分区定义 一般情况下,我们建立数据库表时,表数据都存放在一个文件里 ...

  7. cmd /c和cmd /k 解释,附★CMD命令★ 大全

    cmd /c和cmd /k http://leaning.javaeye.com/blog/380810 java的Runtime.getRuntime().exec(commandStr)可以调用执 ...

  8. VS Code 开发asp.net core 遇到的坑

    摘要 微软发布.NET Core 1.0,ASP.NET Core 1.0 与 Entity Framewok 1.0也有一段时间了,一直没进行这方面的学习,节前公司让调研这方面的可行性.所以还是从最 ...

  9. jquery 中一些 特殊方法 的特殊使用 一览表

    cnblogs的页面, 一种是管理页面, 是随笔的列表 a full list of essays. 另一种是 首页. 要搜索文档的话, 就使用 "首页"的那种方式. 一个jque ...

  10. linux安装软件通常会做哪些事

    一般来说,安装某个包,某个服务,某个软件时,可能会做以下事情(不一定全部) - 在安装目录: /usr/bin, /usr/lib: /usr/you_specified_bin/, /usr/you ...