2011-11-26 14 views
9

मैं _Layout.cshtml व्यू से कई बार एक ही नियंत्रक को कॉल करता हूं। तो इस नियंत्रक में, मैं रनटाइम पर कैसे खोज सकता हूं यदि यह अभी भी वही पृष्ठ है जो प्रतिपादन कर रहा है या यदि कोई नया पृष्ठ अनुरोध किया जा रहा है?एमवीसी 3 पेज - कार्यक्षमता की तरह हैपोस्टबैक

asp.net में आप इसे समझने के लिए ispostback का उपयोग कर सकते हैं। आप कैसे बता सकते हैं कि MVC3 में किसी पृष्ठ के लिए कोई नया अनुरोध किया जा रहा है या नहीं?

धन्यवाद

उत्तर

17

एमवीसी पर ऐसा कोई विचार नहीं है। आपके पास ऐसे कार्य हैं जो POSTs, GETs या दोनों को संभाल सकते हैं। आप [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

धन्यवाद, आपकी पोस्ट ने मेरे दिमाग को बदले जाने के कीड़े के एक नए कैन में खोला। इस मामले में मेरा HttpRequest हमेशा एक जीईटी होगा। तो [HttpGet] विशेषता के साथ, अगर हम अनुरोध की शुरुआत में हैं या अनुरोध में बाद में हैं तो अंतर करने का कोई तरीका नहीं है। लेकिन मुझे लगता है कि एमवीसी 3 में ऐसी कोई बात नहीं है जैसा आप कहते हैं। – River

3

मैं भी आप अपने नियंत्रक में संपत्ति के रूप में इसे लागू सुझाव दे सकता है बेस क्लास जैसे:

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

-Marc

संबंधित मुद्दे