您可以定义一个函数,在单击C#代码中定义的超链接时更改C#属性吗

Can you define a function to change a C# property on the click of an hyperlink defined in c# code?

本文关键字:定义 代码 超链接 属性 单击 函数 一个      更新时间:2023-09-26

我知道用javascript定义的超链接是不可能做到这一点的,但我不确定C#上定义的超级链接是否以同样的方式工作。

我的意思是我有这个代码:

HyperLink hlk;
...
hlk.NavigateUrl = url

我知道我可以定义这样的东西:

hlk.Attributes.Add("onclick", "return somefunction()");

但据我所知,这样的东西只适用于客户端代码,我希望它能从服务器端更改一些内容。

有什么办法可以对我提到的事情做这样的事情吗?由于超链接是从C#而不是javascript生成的,因此可能有一种方法。。。

您想为点击事件添加一个事件处理程序吗?

在C#中,您需要执行

Hyperlink hl;
// ... (setting of hyperlink)
hl.Click += HandlerFunction; // HandlerFunction is your method

点击事件所需的参数为object sender, RoutedEventArgs e

您的服务器运行C#并与浏览器通信,对吗?您在服务器端创建的任何内容最终都将被发送到客户端的浏览器(html+javascript)。超链接是如何创建的(C#、Java、PHP)并不重要,因为它被转换为html,然后从服务器发送出去。

您应该使用AJAX向服务器发送命令。

例如:

hlk.Attributes.Add("onclick", "doSomeAjax(url, command)");

客户端的doSomeAjax函数可以是这样的(我使用了jQuery):

function doSomeAjax(url, command) {
    $.ajax({
        type: "post",
        url: url,
        data: command
    });
}

url应该指向您将在指定用于获取命令的服务器上创建的地址。该命令可以是您想要的任何内容,例如myVar=true,然后在服务器端只需查找myVar变量并将其更改为true。

这个例子当然很容易受到多种攻击!