【问题标题】:Back button causes current page postback. ASP.Net MVC后退按钮导致当前页面回发。 ASP.Net MVC
【发布时间】:2018-10-13 11:37:42
【问题描述】:

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

在局部视图中有一个表格:

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

goBack() 函数:

function goBack() {
    history.go(-1);
}

如果我导航到 编辑 并按后退按钮,一切都很好。 但是,如果我按下 Save 按钮,就会提交表单并调用 CreateAndEdit 操作 - 仍然可以。

CreateAndEdit 动作使用:

RedirectToAction("Details", new { id = license.Id });

为了再次导航到详细信息页面。

然后,如果我再次进入“编辑”,然后按返回 - CreateAndEdit 操作再次被调用 - 不行!

当按下 Back 时,我怎样才能在不调用 CreateAndEdit 的情况下始终返回“详细信息”页面。

【问题讨论】:

  • 定义为锚点 (&lt;a) 以转到定义的 url 路由而不是回复浏览器历史记录。
  • @ldanLevi 您可以尝试使用 Can't call function using ajax 上显示的 Ajax 调用,并告诉我它是否适合您。
  • @MuratYıldız 它可以工作,但它与返回不一样..

标签: c# asp.net asp.net-mvc razor back-button


【解决方案1】:

我认为您看到的行为是标准浏览器行为。提交表单后,如果再按浏览器的“返回”按钮(与history.go(-1);相同),表单将被重新提交。

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

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

【讨论】:

  • 谢谢,我也想过。但我正在寻找另一种解决方案,以保持历史原样。
【解决方案2】:

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

你可以尝试用

装饰路线
[OutputCache(NoStore=true, Duration=0)]

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

【讨论】:

    猜你喜欢
    • 2011-02-13
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多