Asp.net 下的 LinkButton 相當於在普通的 HyperLink 基礎上增加了 OnClick 事件功能,但是在 Chrome 或 Firefox 下分析自動生成的代碼後發現,OnClick 事件功能的實現是通過 Javascript 實現的,如果瀏覽器禁用了 JS 那麼 LinkButton 就失效了。創建一個簡單的 LinkButton 生成的代碼
[LinkButton1](javascript:__doPostBack('ctl00$MainContent$LinkButton1',''))
其中的 href 屬性表面點擊事件是通過向服務端 postback 來實現的。 href=“javascript:__doPostBack ('ctl00$MainContent$LinkButton1','')" 通過分析以上代碼可以得知,只需要向服務端傳送兩個控制參數即可通知服務端來處理點擊事件,使用 GET 方式傳值。因此可以使用以下代碼
運行後發現點擊我們創建的代碼,服務端卻報錯了。原因是服務端啟用了客戶端事件驗證,在 ASP.net 的 aspx 頁面頭部聲明部分增加一段屬性代碼
EnableEventValidation=“false”
便可以關閉客戶端事件驗證。這樣便可以不使用 JS 來實現對服務器事件的調用了。
完整代碼 Default.aspx
<%@ Page Title=“Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" EnableEventValidation="false" %>
Real LinkButton1
[Fake LinkButton1](?__EVENTTARGET=ctl00$MainContent$LinkButton1&__EVENTARGUMENT=)
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void LinkButton1\_Click1(object sender, EventArgs e)
{
//這裡是測試代碼
int a = 1;
int b = 1;
}
}