小编mic*_*nko的帖子

ASP.NET错误:页面Y.ascx无法使用用户控件X.ascx

尝试在Visual Studio 2010中构建网站项目时,我收到以下错误:

页面'/WebSite/controls/C2.ascx'不能使用用户控件'/WebSite/controls/C1.ascx',因为它在web.config中注册并与页面位于同一目录中.

我有2个Web用户控件:

controls/C1.ascx
controls/C2.ascx
Run Code Online (Sandbox Code Playgroud)

控件已在web.config中注册:

<configuration>
    <system.web>
        <pages>
            <controls>
                <add src="~/controls/C1.ascx" tagPrefix="my" tagName="C1"/>
                <add src="~/controls/C2.ascx" tagPrefix="my" tagName="C2"/>
            </controls>
        </pages>
    </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

C1.ascx只包含一个静态HTML,C2.ascx试图包含C1:

C1.ascx只包含一些简单的静态简单HTML.C2.ascx试图包含C1.ascx:

<%@ Control Language="VB" %>
<my:C1 runat="server" />
<p>Hello from C2</p>
Run Code Online (Sandbox Code Playgroud)

在尝试构建项目时,我收到顶部的错误消息.我意识到可以通过向C2.ascx添加另一个Register指令来修复此问题...:

<%@ Register Src="~/controls/C1.ascx" TagPrefix="ctl" TagName="C1" %>
Run Code Online (Sandbox Code Playgroud)

...但我想知道是否有更清洁的解决方案,为什么我首先得到错误?

asp.net ascx webusercontrol

17
推荐指数
2
解决办法
7629
查看次数

ASP.NET 4.0:设置了 OutputCache 的页面上缺少 __doPostBack JavaScript 块

我的设置:在 IIS 6.0 上运行的 ASP.NET 4.0 网站。

我有一个站点,其中包含许多带有虚拟 URL 的登录页面,所有页面都由单个物理登录页面.aspx 文件(通过 ASP.NET 4.0 路由)提供服务,我在其中使用OutputCache指令,将页面缓存在服务器上 24 小时。

最近,我开始遇到__doPostBack一些生成的页面中缺少 JavaScript 块的问题。页面中有一个 LinkBut​​ton(在 webusercontrol 内),所以 JS 块应该在那里,但有时它没有。这自然会导致在单击 LinkBut​​ton 时浏览器中出现 JS 错误

我的怀疑是,可能在第一次访问由上述物理 .aspx 文件处理的给定 URL 时,它可能是客户端(浏览器或搜索机器人)的访问,这可能被 ASP.NET 视为故障级浏览器,因此 doPostBack 没有输出到生成的页面缓存版本中,然后将这个错误的缓存版本提供给所有后续访问者......?另一方面,我想说 ASP.NET 足够聪明,可以为不同级别的浏览器生成不同的缓存版本,不是吗?

尽管如此,我的问题是:我能否在服务器的某个地方找到提供给访问者的缓存文件,并以某种方式检查我的假设是否正确?另外,我想完全禁用浏览器的这种 ASP.NET 识别,并为每个浏览器提供相同的内容,就像它为任何现代浏览器提供服务一样。

非常感谢您的任何建议和帮助。

asp.net postback

4
推荐指数
1
解决办法
2968
查看次数

标签 统计

asp.net ×2

ascx ×1

postback ×1

webusercontrol ×1