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;
}

}

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。