2010-11-27 15 views
24

से पूर्ण यूआरएल बनाते हैं मैं सी # कोड से एक पूर्ण यूआरएल कैसे उत्पन्न करूं?एएसपी.नेट एमवीसी सी # कोड

मैं इस तरह एक यूआरएल उत्पन्न करना चाहता हूं: localhost/{controller}/{action}/{id}। सी # में ऐसा करने का कोई तरीका है जैसे विचारों में यह कैसे किया जा सकता है?

यह नियंत्रक के अंदर उत्पन्न नहीं होगा लेकिन एक व्यूमोडेल के अंदर।

उत्तर

66
string absUrl = Url.Action("Index", "Products", null, Request.Url.Scheme); 

बस Request.Url.Scheme जोड़ें। यह क्या करता है यूआरएल में प्रोटोकॉल जोड़ता है जो इसे एक पूर्ण यूआरएल उत्पन्न करने के लिए मजबूर करता है।

+1

धन्यवाद, यह इतना छिपा हुआ था कि मैंने लगभग 'Url.RouteUrl' का उपयोग किया था। – Peter

+3

और यदि आप Url.Action ("इंडेक्स") अधिभार (जहां आप नियंत्रक निर्दिष्ट नहीं करते हैं) का उपयोग कर एक पूर्ण-योग्य यूआरएल उत्पन्न करना चाहते हैं, तो बस नियंत्रक पैरामीटर के रूप में ** शून्य ** में पास करें। इससे यह होता है: 'यूआरएल.एक्शन ("इंडेक्स", नल, नल, Request.Url.Scheme) '। –

1

एक समान प्रश्न देखें Using html actionlink and URL action from inside controller। आपकी आवश्यकताओं के लिए समान और पुन: प्रयोज्य लगता है।

+0

ओपी उत्पन्न करता है ने कहा कि यह नियंत्रक के अंदर लेकिन एक viewmodel अंदर उत्पन्न नहीं किया जाएगा। –

0

आप यूआरएल "का निर्माण" नहीं करना चाहता और सिर्फ वर्तमान पृष्ठ का पूरा पथ चाहते हैं, इस

Context.Server.UrlEncode(Context.Request.Url.AbsoluteUri)

मैं जानता हूँ कि यह एक विस्तार के रूप के रूप में सुंदर नहीं है चाल करना होगा विधि लेकिन शैक्षिक उद्देश्यों के

0

MVC के लिए नवीनतम अद्यतन के रूप में के लिए यह साझा करने के बारे में सोचा आप Url.Action

string url=Url.Action("ActionName", "Controller", 
         new RouteValueDictionary(new { id= someid }), 
                 //url param 
         HttpContext.Request.Url.Scheme, 
         HttpContext.Request.Url.Host); 
के लिए overload नीचे का उपयोग कर सकते

जो

http://localhost:port/Controller/ActionName?id=someid 
संबंधित मुद्दे