2011-11-26 63 views
9

我從_Layout.cshtml視圖多次調用相同的控制器。所以在這個控制器中,我怎麼能夠在運行時發現它是否仍然在渲染相同的頁面,或者是否正在創建全新的頁面請求?MVC3頁面 - IsPostback類似功能

在asp.net中,你可以使用ispostback來解決這個問題。如何判斷是否正在爲MVC3中的頁面製作全新的請求?

謝謝

回答

17

有沒有這樣的想法在MVC。你有能夠處理POST,GET或兩者的操作。您可以使用[HttpPost][HttpGet]屬性過濾每個操作可以處理的內容。

在MVC中,你可以得到IsPostBack最接近的是你的行動中,這樣的事情:

public ActionResult Index() 
{ 
    if (Request.HttpMethod == "POST") 
    { 
     // Do something 
    } 

    return View(); 
} 

因此,

[HttpPost] 
public ActionResult Create(CreateModel model) 
{ 
    if (Request.HttpMethod == "POST") // <-- always true 
    { 
     // Do something 
    } 

    return RedirectToAction("Index"); 
}  
+0

謝謝,您的文章打開了我的想法,以一個新的罐RESTFUL蠕蟲。在這種情況下,我的HttpRequest將永遠是一個GET。因此,對於[HttpGet]屬性,如果我們處於請求的開始處或稍後請求中,仍然無法區分。但是我猜想MVC3中沒有這樣的東西,就像你說的那樣。 – River

3

也許我也建議你實現它在你的控制器屬性基類如:

protected bool IsPostback 
{ 
    get { return Request.HttpMethod == "POST"; } 
} 

-Marc