都是Login惹得禍

來源:互聯網
上載者:User
        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" %>

修改完後測試,一切正常。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.