The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

ASP.NET 設定 Login 控制項中的按鈕為頁面預設的按鈕

我們有一個網站,裡面有個「登入頁」,頁面中使用的是 ASP.NET 的 Login 控制項,做為管理者登入之用,但是在我的 MasterPage 中有一個「電子報訂閱」的功能,讓使用輸入 Email 後按下旁邊的按鈕後會進行訂閱動作。

不過當我進入登入頁面的時候,在 Login 控制項輸入完帳號、密碼按下鍵盤的 Enter 鍵卻會觸發「訂閱電子報」的按鈕事件,導致出現 RequiredFieldValidator 提示訊息,使用者原本預期要做「登入」動作的,但頁面卻提示你「請輸入您的 E-mail 信箱」,真是莫名其妙。

我們都知道要在頁面中按下鍵盤的 Enter 鍵可以在頁面的 form 標籤設定 DefaultButton 屬性指定當頁面按下 Enter 時預設觸發的 Button 是哪一個,但僅限於設定在 Button 控制項中,因為 DefaultButton 屬性是不可以設定在 Login 控制項上的!

要將頁面的 DefaultButton 設定在 Login 控制項中的「登入」按鈕裡,就必須要寫程式在 Code Behind 中透過 Login1.FindControl 把 Login 控制項中的登入按鈕給找出來,然後再指定到頁面的 Form 物件的 DefaultButton 屬性裡即可,如下程式碼:

Button LoginButton = (Button)Login1.FindControl("LoginButton"); 

Page.Form.DefaultButton = LoginButton.UniqueID;