2011-11-26 10 views
9

Aynı denetleyiciyi _Layout.cshtml görünümünden birçok kez ararım. Yani bu denetleyicide, hala aynı sayfa oluşturuyorsa veya yepyeni bir sayfa isteği oluşturuluyorsa çalışma zamanında nasıl keşfedebilirim?MVC3 Sayfa - IsPostback işlevi gibi işlevler

asp.net'de bunu anlamak için ispostback'i kullanabilirsiniz. MVC3'te bir sayfa için yepyeni bir istekte bulunulup bulunulmadığını nasıl anlayabilirsiniz?

Teşekkürler

cevap

17

MVC hakkında böyle bir düşünce yoktur. POST'ları, GET'leri veya her ikisini de işleyebilecek eylemleriniz var. Her eylemin, [HttpPost] ve [HttpGet] özniteliklerini kullanarak ne işleyebileceğini filtreleyebilirsiniz.

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

    return RedirectToAction("Index"); 
}  
+0

Teşekkürler, postanız RESTFUL olmanın yeni solucanlarına açıldı. Benim HttpRequest bu durumda her zaman bir GET olacaktır. Yani [HttpGet] özelliği ile, isteğin başlangıcında veya talepte daha sonra olduğumuzda hala farklılaşma yolu yoktur. Ama sanırım MVC3'te söylediğin gibi bir şey yok sanırım. – River

3

Ben de size denetleyicisi özellik olarak bunu uygulamaya önerebilir nedenle

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

    return View(); 
} 

: MVC üzerinde

, sen IsPostBack alabilirsiniz yakın eyleminizden içinde böyle bir şeydir taban sınıfı gibi:

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

-Marc