You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改代码使两个按钮分别打开不同的目标网页?

解决ASP.NET Razor视图中按钮onclick同名函数冲突问题

核心问题是同名JavaScript函数会被后面的定义覆盖,所以不管点击哪个按钮,都会执行最后定义的openWin函数。另外要注意:HTML规范不允许form标签嵌套,你原代码里外层已有一个form,里面又套了两个form,这会导致表单行为异常,需要一并修正。

下面提供两种可行的修改方案:

方案一:给函数定义不同名称

直接为两个函数设置不同的名称,按钮分别调用对应函数:

@{
    ViewData["Title"] = "Login";
}
<h1>@ViewData["Title"]</h1>

<div class="container">
    <form action="/action_page.php">
        <div class="form-group">
            <label for="email">Email:</label>
            <input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
        </div>
        <div class="form-group">
            <label for="pwd">Password:</label>
            <input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pwd">
        </div>
        <div class="checkbox">
            <label>
                <input type="checkbox" name="remember">Remember me
            </label>
        </div>

        <script>
            function openStocksPage() {
                window.open("https://localhost:7257/Home/Stocks");
            }
            function openSignupPage() {
                window.open("https://localhost:7257/Home/Signup");
            }
        </script>

        <!-- 移除嵌套的form标签,直接使用按钮 -->
        <button type="button" class="btn btn-primary" onclick="openStocksPage()">
            Login
        </button>
        <button type="button" class="btn btn-primary" onclick="openSignupPage()">
            Sign up
        </button>
    </form>
</div>

方案二:使用带参数的通用函数

定义一个接受URL参数的通用函数,按钮调用时传入不同的目标地址,减少重复代码:

@{
    ViewData["Title"] = "Login";
}
<h1>@ViewData["Title"]</h1>

<div class="container">
    <form action="/action_page.php">
        <div class="form-group">
            <label for="email">Email:</label>
            <input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
        </div>
        <div class="form-group">
            <label for="pwd">Password:</label>
            <input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pwd">
        </div>
        <div class="checkbox">
            <label>
                <input type="checkbox" name="remember">Remember me
            </label>
        </div>

        <script>
            function openPage(url) {
                window.open(url);
            }
        </script>

        <button type="button" class="btn btn-primary" onclick="openPage('https://localhost:7257/Home/Stocks')">
            Login
        </button>
        <button type="button" class="btn btn-primary" onclick="openPage('https://localhost:7257/Home/Signup')">
            Sign up
        </button>
    </form>
</div>

注意:将按钮type改为button可避免触发表单默认提交行为;如果需要保留表单提交逻辑,可以在onclick中先执行页面打开操作,再处理表单提交,或通过event.preventDefault()控制行为。

内容的提问来源于stack exchange,提问作者Melih Gumus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:50:33