2011-11-26 11 views
9

Io chiamo lo stesso controller molte volte dalla vista _Layout.cshtml. Quindi, in questo controller, come posso scoprire in fase di esecuzione se è ancora la stessa pagina che viene visualizzata o se viene eseguita una nuova richiesta di pagina?Pagina MVC3 - Funzionalità simile a IsPostback

In asp.net è possibile utilizzare ispostback per capirlo. Come puoi sapere se è stata fatta una nuova richiesta per una pagina in MVC3?

Grazie

risposta

17

Non c'è alcun modo di pensare su MVC. Hai azioni che possono gestire POST, GET o entrambi. È possibile filtrare ciò che ciascuna azione può gestire utilizzando gli attributi [HttpPost] e [HttpGet].

Sul MVC, il più vicino si può arrivare a IsPostBack è qualcosa di simile nella vostra azione:

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

    return View(); 
} 

Pertanto,

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

    return RedirectToAction("Index"); 
}  
+0

Grazie, il tuo post ha aperto la mia mente a una nuova lattina di vermi di essere RESTFUL. Il mio HttpRequest in questo caso sarà sempre un GET. Quindi, con l'attributo [HttpGet], non c'è ancora modo di differenziare se siamo all'inizio della richiesta o dopo nella richiesta. MA suppongo che non ci sia nulla di simile in MVC3 come dici tu. – River

3

potrei suggerire anche di implementare come proprietà nel controller classe di base come:

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

-Marc

Problemi correlati