我想使用asp:LinkButton
, 因为它看起来像一个链接,但也有服务器端 Click 处理程序。
但是网络服务器似乎无法检测到客户端是否禁用了 javascript,并且没有呈现为仍然有效的机制。
是否可以有一个看起来像链接但有服务器端 OnClick 事件处理程序的链接?
回答
答案是否定的,但以下是一些解决方法的想法。接受了非零赞成票。
我想使用asp:LinkButton
, 因为它看起来像一个链接,但也有服务器端 Click 处理程序。
但是网络服务器似乎无法检测到客户端是否禁用了 javascript,并且没有呈现为仍然有效的机制。
是否可以有一个看起来像链接但有服务器端 OnClick 事件处理程序的链接?
答案是否定的,但以下是一些解决方法的想法。接受了非零赞成票。
您可以使用 CSS 将按钮设置为看起来像链接的样式,但这将非常依赖于浏览器,具体取决于 CSS 实现。
编辑:我觉得有必要完成我的答案,因为它已被接受。
渲染到 HTML 链接,asp:LinkButton
因此不能发布到网页;但只能发出获取请求。要解决此问题,请使用 JavaScript 来处理帖子。但是,如果禁用 Javascript,这是不可能的。
asp:Button
并且asp:ImageButton
是不同的。他们通过使用真正的 HTML 表单元素发布到网页(或根据表单属性获取)来提交 HTML 表单。所以这些将在没有 JS 干预的情况下工作。
一些浏览器将允许 CSS 样式设置按钮的样式,使其看起来像一个链接,因此这可以用来解决这个问题。
只是一个想法:
渲染输入按钮并使用 javascript 将其更改为链接。该按钮适用于非启用 javascript 的浏览器,并成为那些拥有 javascript 的人的链接。
在 ASP.Net 中使用类似的东西,我通常会渲染控件以及隐藏在 JavaScript 中的“可访问控件”。因此,在这种情况下,它将呈现一个 LinkButton(默认情况下通过样式隐藏)和一个普通按钮,其中注册了一些 javascript 来隐藏 Button 并显示 LinkButton。
对于 ASP.Net 控件来说,这是一个非常常见的解决方法,如果没有 javascript,或者当您需要没有 Javascript 的“自动回发”时,它就不能很好地发挥作用。
没有看起来像链接的 INPUT 类型。如果您想使用链接在网页上执行 INPUT 类型的活动,它必须导航到您所在的同一页面。
您可以通过链接传递查询字符串变量,并对其进行响应。它不会完全像回发一样,而是只会导航到您所在的同一页面。
只是为了记录,你所要求的是可能的。
您必须像这样配置控件:
<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)
{
//...
}
您可以在此处找到更详细的信息。