未能加载类型“System.Web.Mvc.ViewPage<String>”

本文解决了ASP.NET MVC中自定义主题文件夹下ViewPage泛型继承时出现的解析错误问题,通过修改Web.config文件中的页面解析器设置,使得自定义主题能够正确解析。

    最近正在学习ASP.NET MVC,由于时间原因以前的皮肤更换功能做了一半没有继续下去。这几天事情不多想把以前的项目完善一下,却遇到一个很奇怪的问题,有一套默认的皮肤是在默认的View文件夹下的,另外一套是在自己创建的Themes文件夹下的,在自定义主题的View页面里指定从ViewPage<T>继承时解析器老是报错,只要把它改为ViewPage就没事儿了。而在默认的View文件夹下无论指定哪一个都是可以正常解析的。

后来在网上找有没有人遇到相同的问题,基本找遍了网络也没找到,StackOverflow上的也没有明确的答案。第二天继续找,于是找到了一篇文章让我恍然大悟,这是那篇文章的地址:http://blog.163.com/xu_shuhao/blog/static/525774872010103053151529/
作者遇到的问题跟我的差不多,但背景完全不同。但却是同一原理。

 

解决办法:

在默认创建的Views文件夹里面会有一个Web.config文件,这里面有个结点叫pages 如下:

< pages
        
validateRequest ="false"
        pageParserFilterType
="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType
="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType
="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" >
       < controls >
         < add  assembly ="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  namespace ="System.Web.Mvc"  tagPrefix ="mvc"   />
       </ controls >

    </pages> 

    其中pageParserFilterType指定了页面解析器。而我们知道在ASP.NET中加载Web.config文件是从外到内的,最后使用的是最内层的配置文件,所以在访问默认的Views文件夹中的视图时加载的便是此文件夹下的配置文件。而在访问自定义Themes文件夹中的视图时,使用的配置文件是外面站点的Web.config,而这个配置文件的pages结点如下:

< pages  validateRequest ="false"  controlRenderingCompatibilityVersion ="3.5"  clientIDMode ="AutoID" >
< namespaces >
                 < add  namespace ="System.Web.Mvc" />
                 < add  namespace ="System.Web.Mvc.Ajax" />
                 < add  namespace ="System.Web.Mvc.Html" />
                 < add  namespace ="System.Web.Routing" />
                 < add  namespace ="System.Linq" />
                 < add  namespace ="System.Collections.Generic" />
             </ namespaces >

        </pages>

    里面并没用指定解析器。所以应该是使用的默认解析器,当我把上面的解析器同样加进去后就可以正常工作了,但是这默认的解析器是哪个呢?解析asp.net webform的吗?那就是aspnet_compiler.exe吗?小弟抛砖引玉,请高人指教。

转载于:https://www.cnblogs.com/mike442144/archive/2012/11/03/2752688.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值