我知道ASP.net页面中包括两种代码模型,一种是单文件页模型,一种是代码隐藏页模型,而页面指令主要是针对于单文件页模型,对于代码隐藏页模型,一些页面指令是可以采用其他的方法来实现,比如@Import、@Assembly,请问我可以这么理解吗?

解决方案 »

  1.   


    不可以这样理解。Code-Behind并不是页面本身。页面在编译之后,它产生了两个的class,一个是为了跟从code-behind的class相匹配的class(因为它们都是partial修饰嘛),另外一个才是真正的页面class,它是从之前这个class继承的子类。也就是说,你说的所谓“单文件页面”是真实的页面,而code-behind所指的class只是其父类模型。
      

  2.   

    要想知道代码生成结果是什么,可以这样做。你可以在设计窗口,在页面上第二行以后写下这样的代码:<%
        adf ad fsdfasdfadsf 
    %>
    然后点击鼠标右键,选择“直接在浏览器里查看”。这时候在浏览器中就会出现错误信息页面,页面上有两个链接,其中一个就是“查看编译源”,这样你就可以看到页面被asp.net自动生成什么代码了。你可以看到你说的所谓“如@Import、@Assembly”之类的,是如何变成第二个class(真实的页面子class)中的代码的。
      

  3.   

    非常感谢SP1234的讲解,我还有些不理解需要请教下:
    我知道Code-Behind并不是页面本身
    代码隐藏页模型是包括页面(.aspx)和代码(.cs),而单文件页模型是只有页面的(.aspx)
    在页面中可以使用@Import来将命名空间导入到ASP.NET应用程序文件中(如:<%@ Import Namespace="System.Net" %>),那是不是和在代码页(.cs)中用using System.Net是一样的意思呢?
    期待您的回复。