7

我想使用asp:LinkButton, 因为它看起来像一个链接,但也有服务器端 Click 处理程序。

但是网络服务器似乎无法检测到客户端是否禁用了 javascript,并且没有呈现为仍然有效的机制。

是否可以有一个看起来像链接但有服务器端 OnClick 事件处理程序的链接?


回答

答案是否定的,但以下是一些解决方法的想法。接受了非零赞成票。

4

5 回答 5

7

您可以使用 CSS 将按钮设置为看起来像链接的样式,但这将非常依赖于浏览器,具体取决于 CSS 实现。


编辑:我觉得有必要完成我的答案,因为它已被接受。

渲染到 HTML 链接,asp:LinkButton因此不能发布到网页;但只能发出获取请求。要解决此问题,请使用 JavaScript 来处理帖子。但是,如果禁用 Javascript,这是不可能的。

asp:Button并且asp:ImageButton是不同的。他们通过使用真正的 HTML 表单元素发布到网页(或根据表单属性获取)来提交 HTML 表单。所以这些将在没有 JS 干预的情况下工作。

一些浏览器将允许 CSS 样式设置按钮的样式,使其看起来像一个链接,因此这可以用来解决这个问题。

于 2009-01-26T16:59:55.757 回答
2

只是一个想法:

渲染输入按钮并使用 javascript 将其更改为链接。该按钮适用于非启用 javascript 的浏览器,并成为那些拥有 javascript 的人的链接。

于 2009-01-26T17:07:13.637 回答
2

在 ASP.Net 中使用类似的东西,我通常会渲染控件以及隐藏在 JavaScript 中的“可访问控件”。因此,在这种情况下,它将呈现一个 LinkBut​​ton(默认情况下通过样式隐藏)和一个普通按钮,其中注册了一些 javascript 来隐藏 Button 并显示 LinkBut​​ton。

对于 ASP.Net 控件来说,这是一个非常常见的解决方法,如果没有 javascript,或者当您需要没有 Javascript 的“自动回发”时,它就不能很好地发挥作用。

于 2009-01-26T17:12:32.330 回答
0

没有看起来像链接的 INPUT 类型。如果您想使用链接在网页上执行 INPUT 类型的活动,它必须导航到您所在的同一页面。

您可以通过链接传递查询字符串变量,并对其进行响应。它不会完全像回发一样,而是只会导航到您所在的同一页面。

于 2009-01-26T17:11:01.927 回答
0

只是为了记录,你所要求的是可能的。

您必须像这样配置控件:

<asp:LinkButton ID="lbtnRequestReview" Text="[ Request Plan Review ]" OnCommand="lbtnRequestReview_Command" CommandName="cmd" CommandArgument="0" CausesValidation="false" runat="server"/>

并将其放在代码隐藏中:

protected void lbtnRequestReview_Command(Object sender, CommandEventArgs e)
        {
           //...
        }

您可以在此处找到更详细的信息。

于 2011-04-09T11:05:37.660 回答