ASP验证摘要阻止后退按钮

时间:2019-12-10 12:16:41

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

我有一个带有表单的页面,该表单在模型上进行验证。问题是它阻塞了取消按钮。

当用户单击“取消”按钮时,其将迫使他们提供新密码并进行确认。它应该只将它们发送回上一页。

@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>
}

我尝试在“返回”按钮上添加Causesvalidation =“ false”,但没有帮助。有没有办法强迫它仅在“保存”按钮上进行验证?

1 个答案:

答案 0 :(得分:1)

请勿使用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>
相关问题