आम तौर पर एक एएसपी.नेट दृश्य में कोई यूआरएल प्राप्त करने के लिए निम्न फ़ंक्शन का उपयोग कर सकता है (<a>
नहीं):एचटीएमएल सहायक में यूआरएल उत्पन्न करें
Url.Action("Action", "Controller");
हालांकि, मुझे यह नहीं पता कि कस्टम HTML सहायक से इसे कैसे किया जाए। मेरे पास
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
}
}
हैल्पर वैरिएबल में एक्शन और जेनरेटलिंक विधियां हैं, लेकिन वे <a>
उत्पन्न करते हैं। मैंने एएसपी.नेट एमवीसी स्रोत कोड में कुछ खुदाई की, लेकिन मुझे सीधा रास्ता नहीं मिला।
समस्या यह है कि उपरोक्त यूआरएल व्यू क्लास का सदस्य है और इसके तत्कालता के लिए इसे कुछ संदर्भों और मार्ग मानचित्रों की आवश्यकता है (जिन्हें मैं नहीं करना चाहता हूं और मुझे वैसे भी नहीं माना जाता है)। वैकल्पिक रूप से, एचटीएमएलहेल्पर क्लास के उदाहरण में कुछ संदर्भ भी हैं जो मुझे लगता है कि यूआरएल इंस्टेंस की संदर्भ जानकारी के सबसेट का रात्रिभोज है (लेकिन फिर से मैं इससे निपटना नहीं चाहता)।
संक्षेप में, मुझे लगता है कि यह संभव है लेकिन सभी तरीकों से मैं देख सकता था, कुछ कम या कम आंतरिक एएसपी.नेट सामान के साथ कुछ हेरफेर शामिल है, मुझे आश्चर्य है कि कोई बेहतर तरीका है या नहीं।
संपादित करें: उदाहरण के लिए, मुझे एक संभावना दिखाई देगी:
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
urlHelper.Action("Action", "Controller");
}
}
लेकिन यह सही प्रतीत नहीं होता है। मैं खुद UrlHelper के उदाहरणों से निपटना नहीं चाहता। एक आसान तरीका होना चाहिए।
मुझे एहसास है कि यह एक सरलीकृत उदाहरण है, लेकिन उदाहरण के लिए मैं एचटीएमएलहेल्पर के बजाय UrlHelper का विस्तार करूंगा। हालांकि, आपके वास्तविक कोड दोनों की आवश्यकता हो सकती है। –
क्षमा करें, मुझे और स्पष्ट होना चाहिए था: मैं एक्सटेंशन विधि में कुछ HTML रीडिंग करना चाहता था और मुझे इसके लिए यूआरएल उत्पन्न करने की आवश्यकता थी। –