首页 > 解决方案 > asp-validation-summary 阻止返回按钮

问题描述

我有一个页面,其中包含对模型进行验证的表单。问题是它阻止了取消按钮。

当用户单击取消按钮时,它会强制他们提供新密码并确认。它应该只是将它们发送回上一页。

@model Auth.Controllers.Account.RecoverPasswordViewModel

<div class="mdl-typography--text-center">
    <h2 class="mdl-typography--headline">Gendan kodeord</h2>
    <p class="mdl-typography--body-1">Gendand kodeord til din konto</p>
</div>

<div asp-validation-summary="ModelOnly" class="mdl-color-text--red-400"></div>

@using (Html.BeginForm("RecoverPassword", "Account", FormMethod.Post, new {@class = "form-horizontal", role = "form"})) {
    <input type="hidden" asp-for="Code" />
    <fieldset>
        <div class="mdl-textfield  mdl-js-textfield mdl-textfield--floating-label">
            <input class="mdl-textfield__input" asp-for="NewPassword" type="password" autocomplete="off" required autofocus/>
            <label class="mdl-textfield__label" asp-for="NewPassword">Nyt kodeord</label>
            <span asp-validation-for="NewPassword" class="mdl-textfield__error"></span>
        </div>
        <div class="mdl-textfield  mdl-js-textfield mdl-textfield--floating-label">
            <input class="mdl-textfield__input" asp-for="ConfirmNewPassword" type="password" autocomplete="off" required/>
            <label class="mdl-textfield__label" asp-for="ConfirmNewPassword">Bekræft nyt kodeord</label>
            <span asp-validation-for="ConfirmNewPassword" class="mdl-textfield__error"></span>
            <input type="hidden" asp-for="ReturnUrl" value="@Model.ReturnUrl" />
        </div>

        <div class="actions">
            <button class="mdl-button mdl-button--primary" onclick="window.history.back()" causesvalidation="false">Gå tilbage</button>
            <button class="mdl-button mdl-button--primary mdl-button--raised mdl-js-button mdl-js-ripple-effect">Gem</button>
        </div>
    </fieldset>
}

我尝试在返回按钮上添加 Causevalidation="false" 但它没有帮助。有没有办法强制它只在保存按钮上验证?

标签: c#asp.net-mvc-3asp.net-core

解决方案


不要使用windows.history.back(),使用重定向(RedirectToAction等)。

windows.history.back()将触发先前的请求被重新发送(如果您是从发布请求到达那里的),这是不受欢迎的行为。

而是创建一个链接

<a class="mdl-button mdl-button--primary mdl-button--raised mdl-js-button mdl-js-ripple-effect"
    asp-controller="MyController" asp-action="Index">Back</a>

推荐阅读