C# 后退按钮导致当前页面回发。NETMVC

C# 后退按钮导致当前页面回发。NETMVC,c#,asp.net,asp.net-mvc,razor,back-button,C#,Asp.net,Asp.net Mvc,Razor,Back Button,我有一个具有“详细信息”操作和“编辑”操作的控制器。 我使用View()导航到编辑然后呈现具有部分视图的页面 在局部视图中,有一种形式: @using (Html.BeginForm("CreateOrEdit", "Licenses", FormMethod.Post, new { @class = "pure-form pure-form-aligned", id = "change", onsubmit = "process(this);" })) { @Html.AntiForg

我有一个具有“详细信息”操作和“编辑”操作的控制器。 我使用
View()导航到编辑然后呈现具有部分视图的页面

在局部视图中,有一种形式:

@using (Html.BeginForm("CreateOrEdit", "Licenses", FormMethod.Post, new { @class = "pure-form pure-form-aligned", id = "change", onsubmit = "process(this);" }))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <div class="floatLeft width100per">
        @Html.HiddenFor(model => model.Id)
        @Html.HiddenFor(model => model.CustomerId)

        <button onclick="goBack()" type="button" class="pure-button pure-button-primary newButton">Back</button>
        <input type="submit" value="Save" class="pure-button pure-button-primary newButton marginRight10" onclick="getModules(); setGuid('@Guid.NewGuid()');" />
        <div class="floatLeft pure-form">
如果我导航到编辑并按下后退按钮,一切正常。 但是如果我按下保存按钮,表单将被提交,并且创建和编辑操作将被调用-仍然可以

CreateAndEdit操作使用:

RedirectToAction("Details", new { id = license.Id });
要再次导航到详细信息页面

然后,如果我再次进入“编辑”,然后按Back- CreateAndEdit再次调用操作-不正常


当按下back时,我如何始终返回“详细信息”页面而不调用CreateAndEdit

我认为您看到的行为是标准的浏览器行为。提交表单后,如果按下浏览器的“后退”按钮(与
历史记录.go(-1);
),表单将重新提交

作为一种解决方法,如果只能从“详细信息”页面访问“CreateOrEdit”页面,只需直接重定向到“详细信息”页面,而不必查看浏览器历史记录

function goBack() {
    location.href = '@Html.Raw(Url.Action("Details", "Licenses",  new { id = Model.License.Id }))';
}

我认为您看到的行为是标准的浏览器行为。提交表单后,如果按下浏览器的“后退”按钮(与
历史记录.go(-1);
),表单将重新提交

作为一种解决方法,如果只能从“详细信息”页面访问“CreateOrEdit”页面,只需直接重定向到“详细信息”页面,而不必查看浏览器历史记录

function goBack() {
    location.href = '@Html.Raw(Url.Action("Details", "Licenses",  new { id = Model.License.Id }))';
}

由于表单提交等原因,您需要为不希望用户返回的页面禁用缓存

你可以试着用

[OutputCache(NoStore=true, Duration=0)]

我相信
[NoCache]
也可以作为控制器操作的装饰。

由于表单提交等原因,您需要为不希望用户返回的页面禁用缓存

你可以试着用

[OutputCache(NoStore=true, Duration=0)]

我相信
[NoCache]
也可以作为控制器动作的装饰。

定义为锚(
@ldanLevi您可以尝试使用如图所示的Ajax调用,并通知我它是否对您有效。@MuratYıldız它可以工作,但与返回时不同。.定义为锚(
@ldanLevi您可以尝试使用如图所示的Ajax调用,并通知我它是否对您有效。@MuratYıldız它可以工作,但与返回不一样。谢谢,我也想到了。但我正在寻找另一种解决方案,以保持历史的原样。谢谢,我也想到了。但我正在寻找另一种解决方案,以便更好地维护历史保持历史的原貌。