在Javascript中导航到URL或使用Url.Action

3

也许这个问题已经有了答案,但我找不到任何能让我理解的信息。

在我的cshtml页面上有一个取消按钮,它包含一个href='@Url.Action("Index")。它看起来像这样:

<a href='@Url.Action("Index")' class="linkbutton" id="btnCancel" title="Return to Home Page">Cancel</a>

现在,如果已经进行了更改,我需要确认在离开页面之前是要保存更改还是放弃更改。

因此,我在按钮单击事件上添加了一个弹出窗口以确认继续操作或保存更改。当然,将按钮代码保留在cshtml文件中,它会按照预期的方式起作用。它是一个链接,我的事件从不触发。

我将cshtml按钮改为以下代码:

<input type="button" class="navigationButtons" id="btnCancel" value="Cancel" title="Return to Home Page" />

现在,我的事件已经被触发并显示了弹出窗口来确认继续或保存。由于保存是执行向数据库保存的另一种方法,所以它非常有效。我无法将“确认”按钮变成链接按钮,因为它在代码中的另一个位置只是继续而不离开页面。
我已经找到了关于window.location、$.get和$.ajax的答案。但是我无法想出如何将它们放入JavaScript代码中,以便跳转到我的Index页面。
请求帮助!有没有人知道如何做到这一点,并帮助我理解我显然不知道的内容。 :-(

1
只需处理链接的 .click() 事件,显示您的弹出窗口,如果被取消,则取消链接的默认操作。 - user3559349
1个回答

2

只要您的JavaScript包含在.cshtml文件中,您就可以在脚本内编写Razor代码:

window.location.replace('@Url.Action("Index")');

如果你遇到了问题,你可以尝试在页面上创建一个hidden链接,并让JavaScript触发点击事件:
<a id="my-hidden-url" href="@Url.Action("Index")" hidden></a>

<script>
    $('#my-hidden-url').trigger('click');
</script>

JavaScript是一个单独的文件。除非我改变我的策略,我不确定这对我是否有效。 - Patricia
1
如果您想要保持JS的独立性,则不必使用Url Helper。如果您确信URL将保持稳定,那么可以在replace()函数中硬编码它。 - Luke T Brooks
也许我需要学习如何使用window.location.replace,因为它做了我尝试的所有其他方法都无法实现的事情。什么都没有!我正在研究它。:-\ - Patricia
1
@Patricia 我已经编辑了我的答案,包括一个额外的解决方案,可能也可以解决你的问题。 - Luke T Brooks

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