2012-10-10 12 views
0

我想知道如何檢查一個操作,從哪個視圖發佈POST到它。 因此,在動作完成後,我可以返回到相同的視圖。如何在MVC 3中檢測從哪個View POST創建的代碼?

像:

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

也許可以通過URL傳遞一些變量嗎? –

回答

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

+0

已實施此解決方案,但所有3個都能正常工作。 謝謝! – Goran303

+0

很高興幫助! –

0

如果你的動作是動態的(在幾個看法有可能會重定向到相同的動作),你可以使用請求的UrlReferrer財產。更多信息可以在MSDN site找到。您將不得不實施Redirect("URL"),或者解析URL以推斷控制器和視圖。

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"); 
}  
相關問題