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

}

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。