2012-09-14 13 views
10

मेरे पास एक एमवीसी 4 ऐप है, लेकिन मैं मुख्य रूप से इसे वेबएपीआई भागों के लिए उपयोग कर रहा हूं। मैं उपयोगकर्ता को वापस भेजा गया एक "सादा पुराना HTML" फ़ाइल चाहता हूं (जो तब वेबपॉ नियंत्रकों से जेएसओएन खींचने के लिए नॉकआउटजेएस या केंडोयूआई का उपयोग करेगा)।एमवीसी 4 - क्या रूट को "सामान्य" अनप्रचारित HTML पृष्ठ पर रूट करने का कोई तरीका है?

मैं जानता हूँ कि मैं यह कर सकता:

routes.IgnoreRoute("{page}.html"); 

और फिर अगर मैं ब्राउज़ "स्थानीय होस्ट/index.html" इसे सफलतापूर्वक बस मेरी .html पृष्ठ वापस करता है। हालांकि, मैं वास्तव में अपने index.html को वापस करने के लिए "रूट" डिफ़ॉल्ट पथ "localhost /" को मैप करना चाहता हूं।

मैं इस कोशिश की:

routes.MapPageRoute("root", "", "~/index.html"); 

लेकिन उस त्रुटि फेंकता है:

There is no build provider registered for the extension '.html'. You can register one in the <compilation><buildProviders> section in machine.config or web.config. Make sure is has a BuildProviderAppliesToAttribute attribute which includes the value 'Web' or 'All'.

किसी को भी मैं कैसे यह काम कर सकते हैं पर कोई विचार है? मैं सिर्फ एक डिफ़ॉल्ट नियंत्रक को हिट कर सकता हूं जो एक सादा एचटीएमएल पेज देता है, लेकिन यह एचटीएमएल पेज के लिए एक बार पूरे एएसपी.NET स्टैक के माध्यम से जाने के लिए ओवरकिल जैसा लगता है, जो तब एएसपी.NET स्टैक के माध्यम से वापस जाने के लिए एक वेबएपीआई यूआरएल को कॉल करता है पृष्ठ के मॉडल के लिए कुछ JSON डेटा प्राप्त करने के लिए।

मैं मूल रूप से बस सभी एमवीसी नलसाजी को "छोड़ना" चाहता हूं और आईआईएस ने मुझे HTML पृष्ठ वापस भेज दिया है, जैसे कि यह एएसपी.NET ऐप नहीं था, या कम से कम जितना संभव हो उतना कम प्रोसेसिंग करना।

+0

लेकिन एक बार आप MVC मार्गों के लिए मिलता है, आप पहले से ही ASP.Net पहुँच गए हैं। यदि आप आईआईएस को इसे संभालना चाहते हैं, तो आपको सर्वर स्तर पर इसे फिर से लिखने के नियमों और इस तरह सेट करना होगा। – McGarnagle

+0

हाँ, और मैं इसके साथ ठीक हूं ASP.NET को थोड़ा स्पर्श करता हूं। मुझे लगा कि एक खाली नियंत्रक ओवरकिल था। अनदेखा मार्ग के साथ कम से कम इसे तुरंत चालू करने और नियंत्रक को कॉल करने और देखने की आवश्यकता नहीं है। – CodingWithSpike

उत्तर

12

अपने मार्ग config के लिए निम्न जोड़ें:

routes.IgnoreRoute(""); 
+0

आह, ज़ाहिर है! इतना आसान, मैंने इसके बारे में क्यों नहीं सोचा! :) धन्यवाद! – CodingWithSpike

+0

यदि मैं मूल वेबएपीआई प्रोजेक्ट बनाता हूं, तो index.html जोड़ें और मेरे रूट कॉनफिग क्लास में ऊपर की रेखा भी जोड़ें, मुझे 404 पेज मिल गया है, क्या मुझे कुछ याद आ रहा है? – AlexandruC

+0

एके आपको अपने अन्य मार्गों से पहले 'मार्ग। इग्नोर रूट ("");' जोड़ना चाहिए। – bonh

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