के साथ सभी क्षेत्रों को कैसे पकड़ें मैं एमवीसी के लिए नया हूं और मौजूदा एप्लिकेशन को संपादित कर रहा हूं।MapRoute
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Util",
"util/{action}",
new {controller = "util"});
routes.MapRoute(
"Catchall",
"{*url}",
new {controller = "Main", action = "CatchUrl"});
}
}
अंदर मुख्य नियंत्रक है कि मूल रूप से एक RedirectToRoute
करता है पर तर्क है और क्षेत्र, नियंत्रक, कार्रवाई करता है और एक निश्चित मूल्य के लिए location
बुलाया क्वेरी स्ट्रिंग: वर्तमान में मैं RouteConfig.cs में निम्न देखें।
public class MainController : Controller
{
public ActionResult CatchUrl()
{
var agencyId = 9;
var routeValues = new RouteValueDictionary
{
{"area", "area1"},
{"controller", "dashboard"},
{"action", "index"},
{"location", "testLocation"}
};
return RedirectToRoute(routeValues);
}
}
यह ठीक काम करने के लिए, जब आप इसे गलत क्षेत्र इसे सही ढंग से डिफ़ॉल्ट एक को जाता है दे रहा है। मैं मुसीबत कैसे काम करता है क्षेत्र रूटिंग और यह कैसे जानता है कि कैसे सही नियंत्रक पर जाने के लिए हो रहा है को समझने
public abstract class CustomAreaRegistration : AreaRegistration
{
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
AreaName + "Ajax",
AreaName + "/{controller}/{action}",
new { action = "Index" }
);
context.MapRoute(
AreaName + "ShortUrl",
AreaName + "/{controller}",
new {action = "Index"}
);
}
}
:
मैं भी एक फ़ाइल बुलाया CustomAreaRegistration.cs देखते हैं।
इसके अलावा, मैं इसे पाने के लिए इतना है कि जब आप
/{area}/
यह कुछ तर्क करता है और सही नियंत्रक से आप redircts जाएँ कोशिश कर रहा हूँ।
routes.MapRoute(
"AreaIndex",
"{module}/",
new {controller = "Main", action = "Index"});
MainController:
public class MainController : Controller
{
public ActionResult Index()
{
var requestHost = HttpContext.Request.Url?.Host;
var location= requestHost == "localhost" ? Request.QueryString["location"] : requestHost?.Split('.')[0];
var routeValues = new RouteValueDictionary
{
{"area", ControllerContext.RouteData.Values["module"]},
{"controller", "dashboard"},
{"action", "index"},
{"location", location}
};
return RedirectToRoute(routeValues);
}
public ActionResult CatchUrl()
{
var routeValues = new RouteValueDictionary
{
{"area", "area1"},
{"controller", "dashboard"},
{"action", "index"},
{"location", "testLocation"}
};
return RedirectToRoute(routeValues);
}
}
और मैं मार्ग तालिका में
कोई मार्ग नहीं मिल आपूर्ति किए गए मान से मेल खाता कैसे काम करता है CatchUrl
मेरे प्रयास करने के लिए इसी तरह की।
मुझे यकीन नहीं है कि क्यों CatchUrl काम करता है और मेरा नहीं।
कैच-सब का प्रासंगिक हिस्सा वाइल्डकार्ड घटक '{* url} 'लगता है और मुझे आपके' {मॉड्यूल}/'मार्ग में कुछ भी दिखाई नहीं देता है। शायद संबंधित जानकारी के लिए निम्न पर एक नज़र डालें: https://stackoverflow.com/questions/7515644/infinite-url-parameters-for-asp-net-mvc-route – grek40