2008-12-06 17 views
8

मैं एएसपी.नेट एमवीसी के लिए नया हूं और मैं एक दृश्य में काम करते समय एक कार्रवाई के लिए पूर्ण यूआरएल प्राप्त करने की कोशिश कर रहा हूं। मुझे कॉलबैक के रूप में किसी तृतीय पक्ष API को सबमिट करने की आवश्यकता है। उदाहरण के लिए मैं क्या जरूरत हैएएसपी.नेट एमवीसी व्यू में पूर्ण सर्वर पथ प्राप्त करने का पसंदीदा तरीका क्या है?

http://myserver.com/controller/action

है जब मैं का उपयोग

<%= Url.Action("action", "controller") %> 

मैं

/नियंत्रक/कार्रवाई

मिल

मुझे सर्वर बेस-पथ जोड़ने के कई तरीके पता हैं लेकिन मुझे आश्चर्य है कि एएसपी.नेट एमवीसी व्यू में ऐसा करने का पसंदीदा तरीका क्या है?

संपादित करें: बस स्पष्ट करने के लिए, यह वर्तमान दृश्य/क्रिया के लिए यूआरएल नहीं है जो एक ही नियंत्रक में किसी अन्य क्रिया के लिए है।

उत्तर

20

आदेश प्रोटोकॉल में बदलाव पकड़ने के लिए (HTTP/HTTPS), विभिन्न बंदरगाहों और आभासी पथ (हमेशा कल्पना नहीं कर सकते हम सर्वर मार्ग पर स्थापित हो जाएगा) मैं निम्नलिखित समाधान के साथ समाप्त हो गया:

<%= Request.Url.GetLeftPart(System.UriPartial.Authority) + Url.Action("action", "controller")%> 

मैं इसे सुंदर बनाने के लिए इसे एक विस्तार विधि में ले जाने पर काम कर रहा हूं।

3

संपादित करें: किसी भी दृश्य/नियंत्रक कॉम्बो के लिए, सुनिश्चित नहीं है कि आपको इससे कुछ भी आसान लगेगा।

http://<%=Request.Url.Host %><%=Url.Action("action", "controller")%> 
+0

'@ Url.Action होगा (" कार्रवाई "," नियंत्रक ", अशक्त," http ")' अधिक संक्षिप्त होगा .. –

2

मैंने How to build absolute action URLs using the UrlHelper class नामक पूर्ण पथ पीढ़ी से निपटने वाला ब्लॉग पोस्ट लिखा था। आप निश्चित रूप से इसे देखना चाहते हैं!

/// <summary> 
/// Generates a fully qualified URL to an action method by using 
/// the specified action name, controller name and route values. 
/// </summary> 
/// <param name="url">The URL helper.</param> 
/// <param name="actionName">The name of the action method.</param> 
/// <param name="controllerName">The name of the controller.</param> 
/// <param name="routeValues">The route values.</param> 
/// <returns>The absolute URL.</returns> 
public static string AbsoluteAction(this UrlHelper url, 
    string actionName, string controllerName, object routeValues = null) 
{ 
    string scheme = url.RequestContext.HttpContext.Request.Url.Scheme; 

    return url.Action(actionName, controllerName, routeValues, scheme); 
} 
+0

आपकी सामग्री का लिंक यहां मृत है। ब्लॉग पोस्ट से जोड़ने के बजाय कृपया वास्तविक उत्तर पोस्ट करें। –

+0

@ जॉन बोकर क्षमा करें, मैंने हाल ही में रीडायरेक्ट नियम तोड़ दिए हैं। मैंने तदनुसार अपना जवाब अपडेट कर लिया है। –

0

Request.Url प्रोटोकॉल सहित पूर्ण URL रिटर्न (http: //), यूआरएल (www.mydomain.com/mypath)


यहाँ विस्तार मैं लिखने के लिए सुझाव है , और क्वेरीस्ट्रिंग (? आईडी = 5)।

@Request.Url  @*Razor tags*@ 

क्लासिक ASP.NET MVC गए टैग के लिए यह

<%=Request.Url%> <%'Classic tags%> 
संबंधित मुद्दे