考试系统——CS文件中不识别Web窗体控件

本文详细解析了ASP.NET中Page指令的各项属性及其用途,包括AutoEventWireup、CodeBehind、CodeFile与Inherits等,并对比了CodeBehind与CodeFile的区别,强调了命名空间和类名的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这一阵总是碰到这样的问题,CS文件中不识别Web窗体中的控件。以前没太在意Page指令,命名控件,这次出了问题,引起了重视。


Page指令

<%@ Page Language="C#" CodeFile="~/Manager/Exammanager/admExamtype.aspx.cs" AutoEventWireup="true" Inherits="ExamSystemV3.Web.Manager.Exammanager.admExamtype" Codebehind="admExamtype.aspx.cs" %>

每个.aspx文件只能包含一条@Page指令。一个Language属性。


各属性含义:

AutoEventWireup:指示页的事件是否自动绑定。默认为True。

CodeBehind:指定包含于页关联的类(WEB窗体对应代码文件的类)的已编译文件的名称。该属性不能在运行时使用。

注意:提供此属性是为了与以前版本的 ASP.NET 的兼容,以实现代码隐藏功能。在 ASP.NET 2.0 版中,应改用 CodeFile属性指定该源文件的名称,同时使用 Inherits 属性指定该类的完全限定名称。

CodeFile:指定指向页引用的代码隐藏文件的路径。此属性与Inherits属性一起使用可以将代码隐藏源文件与网页相关联。此属性仅对编译的页有效。

Inherits:定义供页继承的代码隐藏类。它可以是从Page类派生的任何类。表示后置代码是……CS文件

CodeBehindCodeFile的区别:

CodeBehind不能再运行时使用;CodeFile仅对编译的页有效,可以修改代码后不用整体编译刷新页面就可以看到效果。

<%@ Page Language="C#" AutoEventWireup="true" Inherits="ExamSystemV3.Web.Manager.Exammanager.admExamtype" Codebehind="admExamtype.aspx.cs" %>

<%@ Page Language="C#" CodeFile="~/Manager/Exammanager/admExamtype.aspx.cs" AutoEventWireup="true" Inherits="ExamSystemV3.Web.Manager.Exammanager.admExamtype"  %>


开发时页面的逻辑代码.CS文件存在时,两种都可以用,但是部署到站点后,不部署CS文件的时候后一种写法就会出错找不到文件。



namespace和类名

命名空间是用来组织和重用代码的编译单元。如果写了相同名称的变量或者函数,通过命名空间可以区分。所以当我们命名空间和类名出错的时候控件也不可识别。

web页
<%@ Page Language="C#" AutoEventWireup="true" Inherits="ExamSystemV3.Web.Manager.Exammanager.admAddcheating"  Codebehind="admAddcheating.aspx.cs" %>


.cs类
namespaceExamSystemV3.Web.Manager.Exammanager
{
    public partial class admAddcheating :System.Web.UI.Page
    {
          }
}

总结

通过这个问题认识到,细节决定成败,往往不去在意的地方更会出问题。意识不到不代表不重要。这个问题同时也是全局问题,这两个文件中这两个最重要的地方写不对界面中的代码写的再好都没用。全局观。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值