ASP.NET中的System.Web.UI.Page上的GetType - 返回不同的命名空间和名称

时间:2011-03-23 20:26:56

标签: c# asp.net

  

可能重复:
  ASP.Net and GetType()

我今天遇到了一个小问题。

从下面的代码中可以看出,我在命名空间“WebApplicationExtNetTest.Secure”中有一个名为“Users”的ASP.NET页面。

如果我执行“this.GetType()”,我会得到一个与我预期不同的.FullName,如下所示:

namespace WebApplicationExtNetTest.Secure
{
    [tWorks.Core.CoreCommons.Attributes.Security("CREATEUSER", "Anger säkerhetsklass för att skapa användare")] 
    public partial class Users : System.Web.UI.Page
    {
         Type t = this.GetType();
         Console.WriteLine(t.FullName); // "ASP.secure_views_users_aspx"
    }

因此,我没有获得“WebApplicationExtNetTest.Secure.Users”,而是获得了“ASP.secure_views_users_aspx”。

为什么呢?有没有办法检索“WebApplicationExtNetTest.Secure.Users”呢?

2 个答案:

答案 0 :(得分:1)

问题是,ASP.NET页面只是新编译版本的源代码,这是在第一个请求发生时在场景后面完成的。

因此,您的页面将成为用户请求页面时执行的新派生类的基类。

这就是调用GetType()函数时获得不同类型的原因。

Simen指出的答案有办法以编程方式获取原始类型。

但是,如果您使用的是ASP.NET MVC,则情况会有所不同,原则保持不变。

答案 1 :(得分:0)

查看此问题的答案:ASP.Net and GetType()