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");
}
我在控制器上有三个动作
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");
}