MVC 重定向到上一页(不排除 httppost 操作)

MVC redirect to previous page (exclude not httppost action)

我在控制器上有三个动作

public ActionResult Index() {}
public ActionResult Insert() {}

[HttpPost]
public ActionResult Insert() {
     //some insert code
     redirect to where you come from but exclude Insert page
}

和其他控制器

public ActionResult Example() {}

我要从索引或示例中插入页面,然后将表单提交给 HttpPost 操作。我正在尝试重定向到索引页面或示例页面(我试图找到我来自哪个页面)。我怎样才能做到这一点(UrlReferrer 被重定向到插入页面)

您需要做的就是跟踪请求的来源。有多种方法可以做到这一点。这是一个

在您的 insert GET 操作方法中,您可以读取 UrlReferrer 值并将其传递给视图,您将在视图中将其保存在表单内的隐藏输入中。提交表单后,您可以在 HttpPost 操作方法中阅读它并重定向到它。

public ActionResult Insert()
{
    ViewBag.ReturnUrl = Request.UrlReferrer;
    return View(new InsertVm());
}

并在您的表单中

@model InsertVm 
@using (Html.BeginForm("Insert", "Users"))
{
    <input type="hidden" name="returnUrl" value="@ViewBag.ReturnUrl" />
    @Html.TextBoxFor(a=>a.EmailAddress)
    <button type="submit">Send</button>
}

现在,在您的 Insert HttpPost 操作中,添加一个与隐藏输入同名的参数

[HttpPost]
public ActionResult Insert(InsertVm model,string returnUrl)
{
    // to do : Save data

    if(!String.IsNullOrEmpty(returnUrl))
    {
        return Redirect(returnUrl);
    }
    //fall back
    return RedirectToAction("Index","Home");
}