我想知道如何檢查一個操作,從哪個視圖發佈POST到它。 因此,在動作完成後,我可以返回到相同的視圖。如何在MVC 3中檢測從哪個View POST創建的代碼?
像:
if (enteredfromView1)
{
return RedirectToAction("View1","Controller");
}
else
return RedirectToAction ("View2","Controller");
我想知道如何檢查一個操作,從哪個視圖發佈POST到它。 因此,在動作完成後,我可以返回到相同的視圖。如何在MVC 3中檢測從哪個View POST創建的代碼?
像:
if (enteredfromView1)
{
return RedirectToAction("View1","Controller");
}
else
return RedirectToAction ("View2","Controller");
您可以使用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
已實施此解決方案,但所有3個都能正常工作。 謝謝! – Goran303
很高興幫助! –
如果你的動作是動態的(在幾個看法有可能會重定向到相同的動作),你可以使用請求的UrlReferrer財產。更多信息可以在MSDN site找到。您將不得不實施Redirect("URL")
,或者解析URL以推斷控制器和視圖。
在窗體中添加一個隱藏的輸入,指示視圖的名稱。
<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");
}
也許可以通過URL傳遞一些變量嗎? –