मैंने एक एक्शन फ़िल्टर लिखा है जो एक नए सत्र का पता लगाता है और उपयोगकर्ता को एक पृष्ठ पर रीडायरेक्ट करने का प्रयास करता है जो यह बताता है कि यह हुआ है। एकमात्र समस्या यह है कि मैं यह नहीं समझ सकता कि इसे एक एक्शन फ़िल्टर में नियंत्रक/एक्शन कॉम्बो पर रीडायरेक्ट कैसे किया जाए। मैं इसके बजाय केवल एक निर्दिष्ट यूआरएल पर रीडायरेक्ट करने का तरीका समझ सकता हूं। क्या mvc2 में एक्शन फ़िल्टर में नियंत्रक/एक्शन कॉम्बो पर रीडायरेक्ट करने का कोई सीधा तरीका है?एएसपीनेट एमवीसी एक्शन फ़िल्टर में निर्दिष्ट नियंत्रक और एक्शन में रीडायरेक्टिंग
उत्तर
बल्कि HttpContent के लिए एक संदर्भ हो रही है और ActionFilter में सीधे पुनः निर्देशित से आप फिल्टर संदर्भ का परिणाम सेट एक RedirectToRouteResult हो सकता है। यह थोड़ा क्लीनर और परीक्षण के लिए बेहतर है।
इस तरह:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if(something)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {{ "Controller", "YourController" },
{ "Action", "YourAction" } });
}
base.OnActionExecuting(filterContext);
}
कॉल RedirectToActionthis overload का उपयोग कर:
protected internal RedirectToRouteResult RedirectToAction(
string actionName,
RouteValueDictionary routeValues
)
कार्रवाई फिल्टर में, कहानी एक छोटे से अलग है। एक अच्छा उदाहरण के लिए, यहाँ देखें:
http://www.dotnetspider.com/resources/29440-ASP-NET-MVC-Action-filters.aspx
एक अच्छी जगह एक कार्रवाई फिल्टर (+1) में पुनः निर्देशित देखने के लिए है, लेकिन मैं वास्तव में मेरे फिल्टर करने के लिए नियंत्रक/कार्रवाई कॉम्बो निर्दिष्ट चाहते हैं। मैं कस्टम रूटिंग के मामले में केवल तारों को जोड़ना नहीं चाहता था, लेकिन मैं कुछ ऐसा ढूंढ रहा था जो मदद कर सके। मेरा जवाब देखें –
संपादित करें: मूल सवाल यह है कि सत्र लॉगआउट स्वचालित रूप से पता लगाने के लिए, और फिर पुन: निर्देशित एक निर्दिष्ट नियंत्रक और कार्रवाई करने के बारे में था। हालांकि यह सवाल अधिक उपयोगी साबित हुआ क्योंकि यह वर्तमान रूप है।
मैं इस लक्ष्य को प्राप्त करने के लिए आइटम के संयोजन का उपयोग समाप्त हो गया।
पहला सत्र समाप्ति फ़िल्टर here पाया गया है। फिर मैं एक रीडायरेक्ट यूआरएल प्राप्त करने के लिए नियंत्रक/एक्शन कॉम्बो निर्दिष्ट करने के लिए कुछ चाहता था, जिसे मुझे here के कई उदाहरण मिले। अंत में मैं इस के साथ आया था:
public class SessionExpireFilterAttribute : ActionFilterAttribute
{
public String RedirectController { get; set; }
public String RedirectAction { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext ctx = HttpContext.Current;
if (ctx.Session != null)
{
if (ctx.Session.IsNewSession)
{
string sessionCookie = ctx.Request.Headers["Cookie"];
if ((null != sessionCookie) && (sessionCookie.IndexOf("ASP.NET_SessionId") >= 0))
{
UrlHelper helper = new UrlHelper(filterContext.RequestContext);
String url = helper.Action(this.RedirectAction, this.RedirectController);
ctx.Response.Redirect(url);
}
}
}
base.OnActionExecuting(filterContext);
}
}
यदि आप इसे और अधिक टेस्टेबल बनाना चाहते हैं, तो मेरा मानना है कि आप स्पष्ट रूप से पुनर्निर्देशित करने के बजाय, फ़िल्टरकॉन्टेक्स्ट को रीडायरेक्ट रीसेट पर सेट कर सकते हैं। शुद्ध परिणाम यह है कि एमवीसी अभी भी रीडायरेक्ट करेगा, लेकिन इस तरह आप यूनिट परीक्षण लिख सकते हैं जो मैन्युअल रूप से OnActionExecuting() का आह्वान करता है और फिर filterContext.Result के खिलाफ जोर देता है। –
- 1. एक्शन फ़िल्टर एक्शन पैरामीटर
- 2. एएसपी.नेट एमवीसी एक कस्टम एक्शन फ़िल्टर
- 3. .net एमवीसी नियंत्रक एक्शन विधि
- 4. कंट्रोलर एक्शन में एक्शन फ़िल्टर का डेटा एक्सेस करना
- 5. नियंत्रक एक्शन
- 6. प्राधिकरण फ़िल्टर बनाम एक्शन फ़िल्टर
- 7. एएसपी.नेट एमवीसी - सहायक नियंत्रक और एक्शन नाम सहायक में
- 8. प्रति नियंत्रक/एक्शन विधि
- 9. एक्स्टजेस एक्शन एमवीसी पैटर्न
- 10. एक्शन फ़िल्टर निष्पादन आदेश
- 11. एमवीसी 3 एक्शन रीसल्ट
- 12. एएसपी.नेट एमवीसी में एक्शन फ़िल्टर कैसे परीक्षण करें?
- 13. एमवीसी एक्शन फ़िल्टर एक्शन रिसेट के लिए पास पैरामीटर का उपयोग कर फ़िल्टर?
- 14. एमवीसी एक्शन रिसेट
- 15. कंट्रोलर में एक्शन और एक्शन पैरामीटर्स प्राप्त करें .ऑनएक्सप्शन
- 16. एक्शन
- 17. एमवीसी 3 निलंबन इंजेक्शन निनजे 2.2 + ग्लोबल एक्शन फ़िल्टर
- 18. एएसपी.नेट एमवीसी एक्शन
- 19. एएसपी.नेट एमवीसी एक्शन
- 20. नियंत्रक एक्शन फ़िल्टर के साथ एचटीएमएल आउटपुट कैप्चर करना
- 21. एएसपीनेट एमवीसी नियंत्रक - कन्स्ट्रक्टर उपयोग
- 22. एएसपी.नेट एमवीसी में, नियंत्रक की एक्शन विधि से पहले या नियंत्रक में जेएसओएन को deserialize
- 23. अजाक्सऑनलीएट्रिब्यूट और चाइल्डएक्शनऑनली एट्रिब्यूट को एक एक्शन फ़िल्टर में मिलाकर
- 24. एएसपी.नेट एमवीसी पूर्वावलोकन में एक्शन यूआरएल 5
- 25. एसिंक एक्शन फ़िल्टर: एएसपी.NET वेब एपीआई
- 26. एक्शन पैरामीटर
- 27. एएसपी.नेट एमवीसी: नियंत्रक। हैंडल अज्ञात एक्शन 404 या 405?
- 28. एएसपी.नेट एमवीसी: नियंत्रक को संशोधित किए बिना एक्शन फ़िल्टर पंजीकृत करें
- 29. रेजर एमवीसी मॉडल सेव एक्शन
- 30. एक्शन नामकरण कन्वेंशन
मेरा सिर दर्द कर रहा था, अब यह नहीं है। धन्यवाद – jolySoft
यह मेरे मुकाबले ज्यादा उचित उत्तर है। एमवीसी पर यह मेरा पहला सवाल था और आज मैं इसका उत्तर दूंगा। –