【问题标题】:Where Controls Declarations in a website project are put网站项目中的控制声明放在哪里
【发布时间】:2012-07-07 03:08:01
【问题描述】:

我的网站无法访问代码隐藏中的控件

我拖动控件并将它们添加到 ASPX 文件中,当我尝试访问它们时我无法访问它们。

我尝试使用以下方式打开网站:

  • Visual Studio 2012
  • Visual Studio 2010

当我双击一个按钮时,它会在后面的代码中创建它的事件,但我仍然无法访问控件!

没有 Designer.cs 文件,因为这是一个网站,知道如何修复它吗?

【问题讨论】:

    标签: c# asp.net visual-studio-2010


    【解决方案1】:

    如果没记错的话,标记缺少设计器文件的页面的设计器。您可以在已移植到 .NET 的经典 ASP 页面中观察到这种行为。

    编译器只是解析页面,寻找包含runat="server" 的标签并为其生成服务器端控件。如果没有 ID,则为其生成一个。此外,如果在页面级别设置了AutoEventWireup="true",事件将自动连接到这些控件,就像变魔术一样。如果你问我,这一切都只是编译器巫术,而是相当方便的编译器巫术。

    但这是一个有根据的猜测,基于经验,我相信在 ASP.NET 内部具有更多经验的人可以提供更多引人入胜的细节。 (乔恩斯基特等人)

    【讨论】:

    • 现在知道为什么我无法访问控件了吗?
    • 当您说“无法访问控件”时,您必须更加具体。如果您已获得事件处理程序,则控件名称在事件名称中。此外,控件本身位于 sender 参数中,您只需将其转换为适当的类型即可。
    • 请注意,访问 嵌套 控件可能很棘手。你可能想对 FindControl() 方法做一些研究,你可以在这里找到:msdn.microsoft.com/en-us/library/486wc64h.aspx
    【解决方案2】:

    确保您的 .aspx 文件指定其代码隐藏文件: <%@ Page Title="" Language="C#" CodeFile="YourPage.aspx.cs" Inherits="Content_YourPage" %>

    【讨论】:

    • 是的,aspx 文件指定了它的代码隐藏,当我双击一个按钮时,它会在后面的代码中创建它的事件,但我仍然无法访问控件!
    • 您能否提供代码说明您尝试访问的控件是如何定义的,以及您是如何尝试访问它的?
    • 这是它的声明方式: 我尝试像这样访问它:Button2。文字=“嗨”;
    • 当前上下文中不存在名称“Button2”
    • 从提供的信息中我不清楚为什么它不起作用。也许您可以将整个 aspx 和 aspx.cs 粘贴到您的问题中。也许您正试图在方法或其他东西之外访问它?
    【解决方案3】:

    如果是网站,那么网站就没有设计师。

    但如果您需要设计器,请尝试将其转换为 Web 应用程序

    【讨论】:

    猜你喜欢
    • 2020-10-30
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    相关资源
    最近更新 更多