MVC重定向到上一页(不包括httppost操作)

时间:2017-11-15 16:12:55

标签: asp.net-mvc asp.net-mvc-3

我在控制器上有三个动作

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() {}

我要从Index插入页面,或者从Example中插入页面,然后将表单提交给HttpPost操作。我正在尝试重定向到索引页面或示例页面(我试图找到我来自哪个页面)。我该如何实现(UrlReferrer重定向到插入页面)

1 个答案:

答案 0 :(得分:1)

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

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");
}