ASP.NET根据SQL查询结果更改Href

时间:2018-10-09 08:56:22

标签: javascript c# html asp.net

这是我的问题:

  1. 我有一个SQL查询,无论数据库中是否有结果,我都会得到一个布尔值

    bool excists1;
    public bool Indikatoren
    {
        get
        {
             string ik = (string)GetScalar3("SELECT Data FROM Table WHERE Thing = condition)
             excists1 = ik != null ? true :false;
             return excists1;
        }
    }
    

到目前为止,这确实很好。

  1. 我的ASPX页面中的HTML块带有按钮。根据查询的结果(如果Indikatoren是true或false),必须更改href链接。请注意,“ onlick”仅在JS解决方案中存在。

    <div class="col-6 py-3 px-3">
                    <a class="btn btn-outline-secondary print-hidden-block" id="indi" runat="server" onclick="ChangeRef()" target="_blank" href="#">open</a>
    
  2. 现在出现了真正的问题。我用C#和JavaScript尝试了不同的解决方案。它们都不起作用,我总是被重定向到同一页面,因为该程序仅准备标准的href =“#”。我在JS解决方案中使用了提示功能,向我展示了Indikatoren的价值,它的确是True。

    3.1 C#解决方案

    private void ChangeRef()
    {
    if (Indikatoren==true)
    {
        indi.HRef = "Link1";
    }
    else
    {
        indi.HRef = "Link2";
    }
    

    3.2 JS解决方案

    <script type="text/javascript">
    var JSindi = '<%=Indikatoren%>';
    function ChangeRef() {
        if (JSindi == true) {
            document.getElementById("indi").href="../SchulStat/SchoolDetailsView.aspx";
        }
    }
    alert(JSindi)
      </script>
    

由于JSIndi确实为True,所以我不明白为什么程序总是打开href =“#”并完全忽略这两种方式。

请帮助我,这让我发疯了:)我的代码是否在做错事?或者是否有更好的方法来更改我的href?

1 个答案:

答案 0 :(得分:0)

为什么不仅仅基于Indikatoren服务器端将原始锚元素呈现为正确的URL,而不使用OnClick?我猜如果变量为假,那么您什么都不想发生。从外观上看,您正在使用Bootstrap,因此应将其呈现为span而不是a,以便根据需要将其呈现为按钮。

如果您确实要执行JavaScript路由,请查看event.preventDefault()

https://www.w3schools.com/jsref/event_preventdefault.asp