如何在MVC 3中检测从哪个View POST进行的代码?

时间:2012-10-10 11:44:43

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

我想知道如何检查一个Action,我从哪个View发出POST。 因此,在操作完成后,我可以返回到同一个视图。

像:

if (enteredfromView1)
{
    return RedirectToAction("View1","Controller");
}
else
    return RedirectToAction ("View2","Controller");

3 个答案:

答案 0 :(得分:2)

您可以使用Request.UrlReferrer来实现此目的。

public ActionResult TryMeOut()
{
   TempData["ReturnPath"] = Request.UrlReferrer.ToString();
   //return your users to the correct view.
}

如果这不是你想要的,那么你应该看一下这篇文章。也许这有助于你:Obtain View name in Controller, ASP.NET MVC

答案 1 :(得分:0)

如果您的操作是动态的(多个视图可以重定向到同一操作),则可以使用请求的UrlReferrer属性。可以在MSDN site上找到更多信息。您必须改为实现Redirect("URL"),或者解析URL以推断控制器和视图。

答案 2 :(得分:0)

在表单中添加一个隐藏的输入,指示视图的名称。

<input type="hidden" id="ViewName" name="ViewName" value="View1" />

然后在您的操作中,只需使用Request.Form["ViewName"]来检索它。

string viewName = Request.Form["ViewName"];

switch (viewName)
{
    case "View1":
        return RedirectToAction("View1","Controller");

    case "View2":
        return RedirectToAction("View2","Controller");

    // ...

    default:
        return RedirectToAction("SomeDefault", "Controller");
}