这是我的问题:
我有一个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;
}
}
到目前为止,这确实很好。
我的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>
现在出现了真正的问题。我用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?
答案 0 :(得分:0)
为什么不仅仅基于Indikatoren服务器端将原始锚元素呈现为正确的URL,而不使用OnClick?我猜如果变量为假,那么您什么都不想发生。从外观上看,您正在使用Bootstrap,因此应将其呈现为span
而不是a
,以便根据需要将其呈现为按钮。
如果您确实要执行JavaScript路由,请查看event.preventDefault()
: