zoukankan      html  css  js  c++  java
  • 未能加载类型“System.Web.Mvc.ViewPage<String>”

        最近正在学习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吗?小弟抛砖引玉,请高人指教。

  • 相关阅读:
    MySQL笔记(6)---锁
    MySQL笔记(5)---索引与算法
    MySQL笔记(4)---表
    MySQL笔记(3)---文件
    MySQL笔记(2)---InnoDB存储引擎
    MySQL笔记(1)---MySQL体系结构和存储引擎
    生成器,迭代器,装饰器
    文件操作、def函数、模块导入、json
    数据类型、字符串操作
    基本数据类型,条件判断
  • 原文地址:https://www.cnblogs.com/mike442144/p/2752688.html
Copyright © 2011-2022 走看看