都是Login惹得祸

        ASP.net 2.0的推出对我们程序员来说是再好不过的事情了,不仅功能更丰富了,而且使我们的开发效率大大提高,不过什么东西都有两面性,asp.net2.0所带来的新控件给我们的开发带来方便的同时,却在某些方面与我们的习惯相冲突。
        最近用asp.net做系统,很习惯的在做用户认证的部分建了一个新的网页名字是Login.aspx,当然不管你是编译也好调试也好都没有问题,一切如你希望的那样。但是,当你publish了你的系统,建立了虚拟目录,然后通过IE浏览的时候,问题出现了,页面会显示“Cannot convert type 'ASP.login_aspx' to 'System.Web.UI.WebControls.Login'”。仔细想了想,ASP.net2.0本身附带了Login控件,回过头看看自己创建的Login.aspx页面自动生成CodeBehind类也叫Login,这正好和系统的Login控件冲突了。既然冲突了,那就换个名字吧,可以长久以来登录的页面都是Login,如果叫个LoginPage,感觉怪怪的。我想不改页面的名字有不想使两个类的名字冲突,那就给codebehind类加个名字空间,结果呢?编译都通不过,问题在哪里呢?看看codebehind类的声明就明白了:
public partial class Login : System.Web.UI.Page
partial表明了这只是类的一部分,另外的部分是不可见的,不可见当然就不能修改了。但是,vs2005给我提供了rename的功能,当你修改类的声明的时候,vs会将这个类的其它部分自动rename,所以如果你用文本编辑器修改代码的话,肯定会出问题的。所以解决的方法就是,不修改页面的名字,只修改类的名字,然后修改页面中Inherits的指定了,例如,你将类的名字修改为Mylogin,然后在页面中将Inherits的指定改为:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="MyLogin" %>
修改完后测试,一切正常。
posted @ 2006-03-19 22:39  纶巾客  阅读(1745)  评论(4编辑  收藏  举报