2011-08-14 12 views
7

मेरे पास एक फ़ाइल के लिए URL को पुनर्प्राप्त करने के लिए एक HTML एक्सटेंशन विधि है जो दृश्य के समान फ़ोल्डर में स्थित है।एमवीसी 3: HtmlHelper ऑब्जेक्ट से दृश्य पथ प्राप्त करने का सबसे अच्छा तरीका क्या है?

उदाहरण

/Views/Home/Index.cshtml 
/Views/Home/Index.js 
/Views/Home/Index.css 

इस यह करने के लिए सबसे अच्छा तरीका है? मुझे यह पसंद नहीं है क्योंकि मुझे निम्नलिखित कलाकारों को करना है। मुझे यकीन है कि यदि आप एक अलग दृश्य इंजन का उपयोग कर रहे हैं, तो RazorView काम नहीं करेगा, लेकिन IView में केवल एक रेंडर विधि है।

((RazorView)helper.ViewContext.View).ViewPath 

यहाँ पूर्ण विधि

public static string GetUrl(this System.Web.Mvc.HtmlHelper helper, string fileName) { 
    string virtualPath = ((RazorView) helper.ViewContext.View).ViewPath; 
    virtualPath = virtualPath.Substring(0, virtualPath.LastIndexOf("/") + 1); 
    return virtualPath + fileName; 
} 
+0

आप अंततः यूआरएल के साथ क्या करने जा रहे हैं? इसे कुछ HTML में डालें और इसे ब्राउज़र पर भेजें? यदि हां, तो यह काम करने की संभावना नहीं है क्योंकि दृश्य उपनिर्देशिका सुरक्षित है और एक यूआरएल के माध्यम से सुलभ नहीं है। – Codo

+0

मैंने पहले से ही इन फ़ाइलों को हैंडलर की सूची से BlockViewHandler को हटाकर web.config के माध्यम से सुलभ कर दिया है। –

+0

क्या आप वाकई यह करने के लिए एक अच्छी बात है? अगर आप सुरक्षा कीड़े के लिए उनका निरीक्षण करने के लिए अपनी .cshtml फ़ाइलों को डाउनलोड करते हैं तो क्या आपको बुरा लगेगा? – Codo

उत्तर

-3

है आप वर्तमान URL इस का उपयोग कर प्राप्त कर सकते हैं: How to get current page URL in MVC 3। और फिर वहां से यूआरएल पार्स करें।

एचटीएच।

public static string GetUrl(this HtmlHelper html, string filename) 
{ 
    var viewPath = ((WebViewPage)html.ViewDataContainer).VirtualPath; 
    var viewFolder = viewPath.Substring(0, viewPath.LastIndexOf("/") + 1); 
    var virtualScriptPath = viewFolder + filename; 

    var urlHelper = new UrlHelper(html.ViewContext.RequestContext); 
    return urlHelper.Content(virtualScriptPath); 
} 

वहां WebViewPage करने के लिए एक डाली है, लेकिन मुझे लगता है कि (मुझे ठीक कर लें मैं गलत हूँ) है कि यह आप रेजर का उपयोग कर रहे भले काम करेगा:

+0

यह प्रश्न दृश्य URL को देखने के लिए वर्चुअल पथ प्राप्त करने के बारे में है। – Dunc

1

मैं कुछ इस तरह उपयोग कर रहा हूँ या वेबफॉर्म व्यू इंजन।

6

आप Razor view engine उपयोग करते हैं, आप इस का उपयोग कर सकते हैं:

((System.Web.Mvc.RazorView)htmlHelper.ViewContext.View).ViewPath 

गुड लक

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

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