2015-03-03 7 views
13

मुझे आश्चर्य है कि कोई लेख नहीं है जो इस प्रश्न का उत्तर किसी भी विवरण के साथ देता है। मेरे पास से संबंधित कुछ प्रश्न हैं।रूटेडटाटा क्या है। वैल्यूज [""]?

public ActionResult Index() 
{ 
    ViewBag.Message = string.Format("{0}---{1}--{2}", 
     RouteData.Values["Controller"], 
     RouteData.Values["action"], 
     RouteData.Values["id"]); 

    return View(); 
} 

यहाँ यह मूल रूप से मान जो संभवतः नियंत्रक के "मेटा डेटा" की तरह लगता है पढ़ रही है:

मैं इस कोड को देखा। या यह ऐसा कुछ है जो दृश्य नियंत्रक को भी पास कर सकता है?

उत्तर

14

रूटडेटा। वॉल्यूज़ का उपयोग कक्षाओं को संभालने वाले वर्गों द्वारा डाले गए मान/क्वेरीस्ट्रिंग मानों तक पहुंचने के लिए किया जाता है।
आपके मामले में, आपके रूट कॉन्फ़िगरेशन क्लास में परिभाषित मार्ग में अतिरिक्त पैरामीटर हैं जिनके लिए तर्क प्रदान किए गए थे।
पैरामीटर नियंत्रक, क्रिया, आईडी हैं।
इन पैरामीटर के लिए तर्क आपके कोड में कहीं भी प्रदान किए गए होंगे।

जब आप कुछ स्तरों को उच्च स्तर पर शुरू करते हैं तो यह अधिक समझ में आता है, इसलिए आप जानते हैं कि आप क्या खोज रहे हैं।

  1. Global.asax.cs

    protected void Application_Start(object sender, EventArgs e) 
    { 
        routingActions.RegisterCustomRoutes(RouteTable.Routes); 
    } 
    
  2. एक अन्य वर्ग को परिभाषित करता है उपरोक्त विधि:

    public void RegisterCustomRoutes(RouteCollection routes) 
    { 
        routes.MapPageRoute("searchdetails", "searchdetails/{orderID}/{PageIndex}/{PageSize}", "~/View/SearchDetails.aspx"); 
    } 
    
  3. निम्नलिखित कोड एक हाइपरलिंक बनाता है। एचआरईएफ का निर्माण करने का तरीका मुख्य अंतर है। इस मामले में, "खोज विवरण" कक्षा में परिभाषित किया गया है जिसमें मेरा मार्ग कॉन्फ़िगरेशन शामिल है।

    linkToDetails.HRef = GetRouteUrl("searchdetails", 
           new 
           { 
            orderID = someOrderID, 
            PageIndex = currentPageIndex, 
            PageSize = PageSize 
           }); 
    
  4. अंत में, लक्ष्य पृष्ठ में यह जानकारी कदम 3. में पारित उपयोग करने के लिए यह वह जगह है जहाँ हम RouteData.Values ​​का उपयोग [ ""]

    protected void Page_Load(object sender, EventArgs e) 
    { 
        var _orderid = Page.RouteData.Values["orderID"].ToString(); 
        var _PageIndex = Convert.ToInt32(Page.RouteData.Values["PageIndex"]); 
        var _PageSize = Convert.ToInt32(Page.RouteData.Values["PageSize"]); 
    } 
    
+1

क्यों Page_Load की जरूरत है एक स्पष्ट रूप से एमवीसी आवेदन? – Stack0verflow

+0

@ Stack0verflow हमारे पास एक वेब फॉर्म साइट में एक समान सेटअप है। आप इसे कर सकते हैं, यह सिर्फ डिफ़ॉल्ट नहीं है (एमवीसी के विपरीत)। – Trisped

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