एमवीसी 4 में कुछ मार्ग पकड़ने का प्रयास करते समय (मुझे कुछ उदाहरण मिल गए हैं, और मेरे कोड पर आधारित है) यह 404 त्रुटि देता है। मैं इसे आईआईएस 7.5 पर चला रहा हूं। यह एक सीधा आगे समाधान की तरह लगता है, तो मुझे क्या याद आ रही है?एमवीसी 4 पकड़ें सभी मार्ग कभी नहीं पहुंचे
एक नोट, यदि मैं "डिफ़ॉल्ट" मार्ग से ऊपर "कैचअल" मार्ग चलाता हूं तो यह काम करता है। लेकिन निश्चित रूप से तब तक कोई अन्य नियंत्रक कभी नहीं पहुंचे हैं।
यहाँ कोड है:
Route.Config:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"CatchAll",
"{*dynamicRoute}",
new { controller = "CatchAll", action = "ChoosePage" }
);
नियंत्रक:
public class CatchAllController : Controller
{
public ActionResult ChoosePage(string dynamicRoute)
{
ViewBag.Path = dynamicRoute;
return View();
}
}
यह अच्छी तरह से काम करता है। यदि आप ऐसा करते हैं तो आप foreach और substring से बच सकते हैं: 'var dynamicRoute = string.Join ("/", requestContext.RouteData.Values.Values);' –
अच्छी कॉल नाथन। थोड़ी देर हो गया क्योंकि मैंने इस कोड को देखा था। मैं हमेशा पुराने कोड को सुधारने के तरीके ढूंढता हूं। यह निश्चित रूप से उन समयों में से एक है। मैंने आपके सुझाव के साथ उत्तर अपडेट किया है। धन्यवाद! – gsxrboy73
एसओ इसके लिए बहुत अच्छा है, मैं यहां आने पर लगभग हर बार कुछ सीखता हूं। यह कोड बहुत अच्छा था, मैं यह पता लगाने की कोशिश कर रहा था कि क्या मैं इसे मूल नियंत्रक में संभालना चाहता हूं, लेकिन इसे नियंत्रक फैक्ट्री तक दबाकर एक बेहतर विचार है! –