banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

[Asp.net] 解決禁用JS後LinkButton無效問題

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 方式傳值。因此可以使用以下代碼

Fake LinkButton1

運行後發現點擊我們創建的代碼,服務端卻報錯了。原因是服務端啟用了客戶端事件驗證,在 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;
}

}

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。