ASP.NET: 禁用JavaScript的asp:LinkButton?

7
我想使用一个asp:LinkButton,因为它看起来像一个链接,但也有服务器端的Click处理程序。
但是Web服务器似乎无法检测到客户端是否禁用了JavaScript,并且不会呈现出仍然有效的机制。
是否可能拥有一个看起来像链接的链接,但具有服务器端OnClick事件处理程序?
答案是否定的,但以下是一些解决方法。接受得分不为零的解决方案。
5个回答

7
您可以使用CSS将按钮样式设置成链接,但这非常依赖于浏览器对CSS的实现。
编辑:我感到有必要完善我的答案,因为它已经被接受。 asp:LinkButton会呈现为HTML链接,因此无法在网页上进行提交(post),只能进行获取(get)请求。为了解决这个问题,微软使用JavaScript来执行提交(post)。但是,如果禁用了JavaScript,则无法使用此方法。 asp:Buttonasp:ImageButton是不同的。它们通过使用真正的HTML表单元素通过提交(post)或获取(get)方式提交HTML表单。因此,这些按钮无需JS干预即可工作。
一些浏览器允许使用CSS样式将按钮样式设置成链接,因此可以使用这种方法来解决问题。

3
如果没有示例代码,这个版本就不够完整了——否则它只会引发另一个名为“如何使用CSS和JavaScript”来创建一个看起来像链接的按钮的SO问题。 - Ian Boyd

2

一个想法:

渲染一个输入按钮,使用JavaScript将其转换为链接。该按钮可用于未启用JavaScript的浏览器,并对那些启用了JavaScript的用户成为链接。


太棒了,渐进增强的想法! - Ruan Mendes

2

对于类似ASP.Net的情况,我通常会呈现控件,以及一个通过JavaScript隐藏的“可访问控件”。因此,在这种情况下,它将呈现一个LinkButton(默认情况下通过样式隐藏),以及一个普通按钮,并注册一些JavaScript来隐藏按钮并显示LinkButton。

这是ASP.Net控件常见的解决方法,特别是在没有JavaScript的情况下不友好的控件,或者需要“自动回传”但又没有JavaScript的情况下。


提供一些示例代码来解释你在谈论什么会很好。 - Ian Boyd

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)
        {
           //...
        }

您可以在这里找到更详细的信息。


0

没有类似链接的输入类型。如果您想使用链接在网页上执行输入类型的操作,它将必须导航到与您所在页面相同的页面。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接