我在控制器上有三个动作
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重定向到插入页面)
答案 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");
}