मैंने 2 नियंत्रकों, HomeController
और OtherController
के साथ अन्यथा खाली एएसपी.नेट एमवीसी 3 एप्लिकेशन बनाया है।आपको HTML.Action के लिए परिभाषित रूट की आवश्यकता क्यों है?
HomeController.cs इस तरह दिखता है:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
Index.cshtml इस तरह दिखता है:,
@Html.Action("Index", "Other")
और बेशक, Othercontroller.cs:
public class OtherController : Controller
{
[ChildActionOnly]
public ActionResult Index()
{
return Content("OK!");
}
}
अब तक , बहुत अच्छा। मैं अनुप्रयोग चलाने, और यह मुझे सब कुछ है OK!
अब, मैं डिफ़ॉल्ट RegisterRoutes
Global.asax.cs से ले बताता है:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
और मैं यह पड़ना अप, ताकि कोई मार्गों OtherController
से मेल खाते हैं:
System.InvalidOperationException: No route in the route table matches the supplied values.
Source Error:
Line 1: @Html.Action("Index", "Other")
:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Default", "", new { controller = "Home", action = "Index" });
}
अब, जब मैं पेज चलाने के लिए, यह इस त्रुटि संदेश के साथ दुर्घटनाओं
मैंने .Action
पर कॉल में नियंत्रक का नाम और क्रिया का नाम निर्दिष्ट किया। कोई यूआरएल उत्पन्न नहीं हो रहा है, और कोई अनुरोध नहीं किया जा रहा है। रूटिंग को शामिल करने की भी आवश्यकता क्यों है?
धन्यवाद
मैं निम्न पंक्ति है कि मुझे एक त्रुटि दे रहा था था आप। यह एक अधिभार का एक विशिष्ट उदाहरण देने में मदद कर सकता है जो कि किस मार्ग का उपयोग करने के लिए प्रभावित करेगा। क्या आप एक साधारण के बारे में सोच सकते हैं? –
घर के अंत में देर से घंटों में (यम, वाइन) दिमाग में आने वाला पहला व्यक्ति आपके मार्ग मूल्य शब्दकोश में एक क्षेत्र का उपयोग करेगा। मार्ग हैंडलर के बिना, एमवीसी कैसे पता लगाएगा कि किस नेमस्पेस को नियंत्रक की तलाश है या यदि यह किसी क्रिया के लिए पैरामीटर था। -> @ एचटीएमएल। एक्शन ("एक्शन", "कंट्रोलर", नया {क्षेत्र = "एडमिन"})। इसके अलावा, नामित मार्ग एक और उदाहरण हो सकते हैं, जहां आप बस मार्ग का नाम पारित करते हैं और आवश्यक रूप से नियंत्रक, क्रिया पैरामीटर को पास करने की आवश्यकता नहीं होती है क्योंकि उन्हें नामित मार्ग परिभाषा में परिभाषित किया जा सकता है। – Tommy