ASP.NET MVC

现象:

昨天在处理PBS系统问题的时候意外发现两个js错误(而同样的代码在同事机器上都没有问题),如下图。

图1

图2

图3

原因分析:

初步看起来是因为页面上没有id为'form1'的form和id为‘MainContent_rblIsAdProduct_0’的radiobutton,那它实际生成的id是什么呢?为了确认,我查看页面的源代码,发现生成的id如下图。

图4

masterpage中的id为'form1',生成HTML后变成了'aspnetForm'。

图5

内容页中的id为'MainContent_rblIsAdProduct_0'加了前缀'ctl00_'。

通过源代码的分析,看起来像asp.net 3.5或更早版本的行为(给服务器端控件生成唯一客户端ID),因为从asp.net 4.0版本开始已经默认不加前缀了,而我本机的.net framework就是4.0版本的,项目站点指定的也是.net framework 4.0,那为什么看起来还是asp.net 3.5的效果呢?

首先查看项目(PackageFH.Offline.Site)使用的.net framework框架版本,发现使用的是.net framework 4的版本,所以项目使用的.net framework版本没有问题,也就排除了项目使用框架版本不正常的怀疑。

联想到在同事的开发机器上浏览起来都正常,唯独在我的机器上报错,所以很有可能是某个地方的配置不对,首先我想到会不会是IISExpress的配置问题,为了快速验证,我拿同事机器上IISExpress的配置文件过来替换,再次运行错误果然不见了,所以验证了是因为IISExpress的配置导致了这个问题。

既然确定了是因为IISExpress的配置导致的,那就要确定到底是那一个点导致的,经过反复比对和验证,最后发现是由applicationhost.config中site节点下根目录('/')的配置导致的,因为我的机器根目录指向的是一个使用asp.net 3.5框架的站点,如图6,而这个站点下的web.config指定了controlRenderingCompatibilityVersion属性使用asp.net 3.5版本,如图7。

图6

图7

解决方案:

既然找到了问题的根本原因,那么解决方法就很简单了。将IISExpress下site的根目录指定为%IIS_SITES_HOME%或一个已存在的目录(如果目录中存在web.config,需要去掉controlRenderingCompatibilityVersion和clientIDMode),使用asp.net 4.0框架默认配置既可,如图8。

图8

注:site节点的根目录相当于IIS中的站点根目录,而application相当于应用程序(也可以是虚拟目录),如果站点根目录下有web.config文件,那么整个站点都会应用这个配置,所以site的根目录最好不要有web.config文件。

参考文章:

1,StackOverFlow中的解释:http://stackoverflow.com/questions/4437717/asp-net-2-5-prefixing-ctl00-and-asp-net-4-not-prefixing-ctl00

 
 
分类: ASP.NET
摘要: 以前使用ASP.NET WebForm开发时,喜欢使用Repeater控件嵌套的方式开发前台页面,这样就不用JS拼接HTML或者后台拼接HTML了,写出的HTML页面美观、简捷、易于维护,由于不用JS拼接HTML,所以JS写的也很少。 最近使用ASP.NET MVC开发,前台页面的功能比较复杂...阅读全文
posted @ 2014-12-16 14:32 秋荷雨翔 阅读(905) | 评论 (4) 编辑
摘要: 模板页Layout.cshtml代码(路径"~/Views/Backstage/MachineMng/Layout.cshtml"):@{ ViewBag.Title = "货机管理";} @ViewBag.Title ...阅读全文
posted @ 2014-12-16 13:12 秋荷雨翔 阅读(52) | 评论 (0) 编辑

IISExpress配置文件的更多相关文章

  1. IISExpress配置文件的一个坑

    现象: 昨天在处理PBS系统问题的时候意外发现两个js错误(而同样的代码在同事机器上都没有问题),如下图. 图1 图2 图3 原因分析: 初步看起来是因为页面上没有id为'form1'的form和id ...

  2. IISExpress实现外部访问

    首先修改IISExpress配置文件 \IISExpress\config\applicationhost.config 在website中添加一个binding <binding protoc ...

  3. IISExpress 开放局域网访问

    1. 设置 IISExpress 配置文件 applicationhost.config VS2015 :这个配置文件 在工程目录下的 .vs/config 隐藏目录 其他版本 :在用户目录中的 II ...

  4. 【Net】CEF浏览IISExpress运行Web项目

    前言 本文介绍在Winform桌面应用中,使用IISExpress做Host主机,启动.Net平台的Web项目. 浏览Web网页使用CEF开源组件. 准备 首先创建Winform项目WinFormII ...

  5. IISExpress Log 文件路径

    问题 用VS做开发时经常用IISExpress测试web程序,那么在测试过程中生成的Log文件放在哪里了? 答案 情况1 默认情况下 applicationhost.config 文中定义了连个日志文 ...

  6. Asp.Net 配置IISExpress允许外部访问

    1.找到IISExpress的配置文件,或位于(文档/IISExpress/config)文件夹下,打开applicationhost.config,找到如下代码:<site name=&quo ...

  7. 配置IISExpress允许外部访问

    1.找到IISExpress的配置文件,位于 <文档>/IISExpress/config文件夹下,打开applicationhost.config,找到如下代码: <site na ...

  8. ASP.NET下使用xml反序列化、缓存实现个性化配置文件的实时生效

    因为一些配置属性比较多,存在多组属性,因此结合xml解析.缓存技术,实现配置文化的自动解析.存入缓存.缓存依赖实时更新配置内容. 配置文件反序列化存入缓存的核心方法: public Class.Set ...

  9. 来吧学学.Net Core之项目文件简介及配置文件与IOC的使用

    序言 在当前编程语言蓬勃发展与竞争的时期,对于我们.net从业者来说,.Net Core是风头正紧,势不可挡的.芸芸口水之中,不学习使用Core,你的圈内处境或许会渐渐的被边缘化.所以我们还是抽出一点 ...

随机推荐

  1. hdu3037Saving Beans

    Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission ...

  2. 颜色(color)转换为三刺激值(r/g/b)(干股)

    //颜色转换  ##665522 - 三色值 + (UIColor *)setFontColorWithString:(NSString *)color {     NSString *cString ...

  3. PHP与EXCEL PHPExcel

    1.PHPExcel一个简短的引论 PHPExcel 它是用来操作Office Excel 文档PHP图书馆,它是基于微软的OpenXML标准PHP语言.能够使用它来读.写不同格电子表的类型格,例如 ...

  4. onethink和phpwind共享

    将onethink和phpwind数据库安装在一起.使用公用表前缀. 将onethink的member表点phpwind有user表 这是onethink在根文件夹的安装,phpwind安装在bbs的 ...

  5. 开源远程控制RealVNC源代码中的通讯协议RFB(远程帧缓冲)(转)

    在网上流传的gh0st3.6源代码中,远程桌面总是存在CPU占用率高和画面更新不及时等问题.于是想到了著名的开源远程控制RealVNC  它采用了远程帧缓存的协议(Remote Frame buffe ...

  6. YouTube图片幻灯片分享技巧

    以前,您将使用的Windows Movie Maker或Picasa的工具,如缝合的图像文件转换成视频上传到YouTube.然而,添美的小编分享了她的技巧,你可以创建一个图片直接进入YouTube的视 ...

  7. 【Testin实验室】MoiMark安卓中国终端体验性能排行榜(11月报)

    [Testin实验室]MoiMark安卓中国终端体验性能排行榜(11月报) 2014/11/20 · Testin · 实验室报告 11月报要点: 新增机型Note4强势夺得第一.三星Note4以多个 ...

  8. android(9)_数据存储和访问3_scard基本介绍

    使用Activity的openFileOutput()保存文件的方法,文件存储在手机空间,通常情况下,手机的存储空间不是很大,存储小文件确定.假设你要存储大文件,如视频,是不可行. 对于这样大的文件, ...

  9. MapReduce架构和算法(2)

    一个.combiner计划 每map它可能会产生大量的输出,combiner的作用是map输出端先做合并.reducer的数据量. combiner最基本是实现本地key的归并,combiner具有类 ...

  10. Web 服务器 (IIS) 角色

    原文:Web 服务器 (IIS) 角色 1. 对于默认安装,请在命令行提示符下键入以下命令,然后按 Enter: start /w pkgmgr /iu:IIS-WebServerRole;WAS-W ...