【问题标题】:How to make (link)button function as hyperlink?如何使(链接)按钮功能作为超链接?
【发布时间】:2012-12-11 16:18:24
【问题描述】:

如何将asp:Buttonasp:LinkButton 用作asp:Hyperlink

现有的超链接只是转到同一页面上的另一个部分:NavigateUrl="#Section2"

我想在 aspx 文件中执行此操作而无需额外编码。谢谢。

目的是让按钮看起来而不是带下划线的文本但是我不想使用带有超链接的图像来实现此目的。

【问题讨论】:

  • 为什么要这样做而不是直接使用超链接?
  • 回到 HTML 基础(正如 Aristos 评论的那样):您为什么还要考虑 ASP.Net 控件呢? ASP.Net 中没有规定您“应该”始终使用控件。一个简单的hyperlink 就可以了。你可以style随心所欲...

标签: asp.net button hyperlink webforms linkbutton


【解决方案1】:

您可以使用 OnClientClick 事件来调用 JavaScript 函数:

<asp:Button ID="Button1" runat="server" Text="Button" onclientclick='redirect()' />

JavaScript 代码:

function redirect() {
  location.href = 'page.aspx';
}

但我认为最好的方法是使用 css 设置超链接的样式。

例子:

.button {
  display: block;
  height: 25px;
  background: #f1f1f1;
  padding: 10px;
  text-align: center;
  border-radius: 5px;
  border: 1px solid #e1e1e2;
  color: #000;
  font-weight: bold;
}

【讨论】:

  • 点击后重定向似乎不起作用...应该是单引号吗?
  • 是的,这个redirect()方法不能正常工作,我们进入了方法但是location.href = 'page.aspx';不重定向到页面。
【解决方案2】:

中间有一条路。如果你想要一个 HTML 控件,但你需要在服务器端访问它,你可以简单地添加 runat="server" 属性:

<a runat="server" Id="lnkBack">Back</a>

然后您可以使用Attributes 更改href 服务器端

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
       lnkBack.Attributes.Add("href", url);
    }
}

导致:

<a id="ctl00_ctl00_mainContentPlaceHolder_contentPlaceHolder_lnkBack" 
      href="url.aspx">Back</a>

【讨论】:

  • 此解决方案使用锚点,而不是按钮。要使用此方法,您还必须考虑链接的可见显示,这可能需要一些 CSS 操作。
【解决方案3】:

完成此操作的最佳方法是简单地将“href”添加到链接按钮,如下所示。

<asp:LinkButton runat="server" id="SomeLinkButton" href="url" CssClass="btn btn-primary btn-sm">Button Text</asp:LinkButton>

使用 javascript 或在 page_load 中以编程方式执行此操作也可以,但不是执行此操作的最佳方式。

你会得到这个结果:

<a id="MainContent_ctl00_SomeLinkButton" class="btn btn-primary btn-sm" href="url" href="javascript:__doPostBack(&#39;ctl00$MainContent$ctl00$lSomeLinkButton&#39;,&#39;&#39;)">Button Text</a>

您也可以通过使用常规 &lt;a href="" class=""&gt;&lt;/a&gt;.

【讨论】:

  • 漂亮而简单。不知道为什么我不认为这样做......非常适合我需要的东西。谢谢!
【解决方案4】:

这可以很容易地使用 PostBackUrl 和常规按钮来完成。

<asp:Button ID="Button1" runat="server" Text="Name of web location" PostBackUrl="web address" />

【讨论】:

    【解决方案5】:

    您可以使用链接按钮通过PostBackUrl="#Section2" 导航到同一页面中的另一个部分

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-29
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-26
      • 2020-06-27
      相关资源
      最近更新 更多