दृश्य या उसका स्वामी नहीं मिला या कोई दृश्य इंजन खोजे गए स्थानों का समर्थन नहीं करता है


80

इस तरह की त्रुटि: व्यू 'LoginRegister' या इसके स्वामी को नहीं मिला था या कोई दृश्य इंजन खोजे गए स्थानों का समर्थन नहीं करता है। निम्नलिखित स्थान खोजे गए:

~ / दृश्य / MyAccount / LoginRegister.aspx

~ / दृश्य / MyAccount / LoginRegister.ascx

~ / दृश्य / साझा / LoginRegister.aspx

~ / दृश्य / साझा / LoginRegister.ascx

~ / दृश्य / MyAccount / LoginRegister.cshtml

~ / दृश्य / MyAccount / LoginRegister.vbhtml

~ / दृश्य / साझा / LoginRegister.cshtml

~ / दृश्य / साझा / LoginRegister.vbhtml

दरअसल मेरा पेज व्यू पेज ~/Views/home/LoginRegister.cshtmlतो मैं क्या कर रहा हूं

और मेरा RouteConfigहै

 public class RouteConfig
    {

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "MyAccount", action = "LoginRegister", id = UrlParameter.Optional }
            );
        }
    }

लॉगिन फ़ोल्डर को सही फ़ोल्डर (MyAccount कंट्रोलर के लिए) में ले जाएं।
मैंसफील्ड

नियंत्रक? लेकिन मेरा पेज देख रहा है
user2564537

2
ASP.NET MVC एक विशिष्ट नियंत्रक के लिए साझा किए गए फ़ोल्डर या नियंत्रक के नाम के साथ एक फ़ोल्डर के लिए विचारों की अपेक्षा करता है। जैसा कि आप देख सकते हैं, यह "MyAccount" फ़ोल्डर, और "साझा" फ़ोल्डर में दिख रहा है। यदि आप किसी नियंत्रक में दृश्य का उपयोग करना चाहते हैं, तो आपको इसे उस नियंत्रक नाम के साथ फ़ोल्डर में रखना चाहिए। इसका आपके रूट कॉन्फ़िगरेशन से कोई लेना-देना नहीं है।
मैन्सफील्ड

8
साइट को किसी अन्य कंप्यूटर पर प्रकाशित करने के बाद मुझे यह त्रुटि मिली। यह देखने के लिए बिल्ड एक्शन उन पर स्विच करने और पुनर्प्रकाशित (या केवल फ़ाइल की प्रतिलिपि बनाने) के Noneबजाय सेट पर Contentकाम किया गया था।
पैट्रिक

जवाबों:


108

यदि आपका मॉडल प्रकार स्ट्रिंग है क्योंकि सावधान रहें क्योंकि व्यू (स्ट्रिंग, स्ट्रिंग) का दूसरा पैरामीटर मास्टरनेम है, न कि मॉडल । आपको ऑब्जेक्ट (मॉडल) के साथ ओवरलोड को दूसरे पैरामेटर के रूप में कॉल करने की आवश्यकता हो सकती है:

गलत :

protected ActionResult ShowMessageResult(string msg)
{
    return View("Message",msg);
}

सही बात :

protected ActionResult ShowMessageResult(string msg)
{
    return View("Message",(object)msg);
}

या (bradlis7 द्वारा प्रदान):

protected ActionResult ShowMessageResult(string msg)
{
    return View("Message",model:msg);
}

16
कास्टिंग के बजाय (object)msg, स्पष्ट रूप से तर्क निर्दिष्ट करें:return View("Message", model: msg);
bradlis7

1
यह एक महान जवाब है
JsonStatham

31

मुसीबत:

आपका Viewडिफ़ॉल्ट स्थानों में नहीं पाया जा सकता है।

स्पष्टीकरण:

दृश्य उसी फ़ोल्डर में होना चाहिए जिसका नाम फ़ोल्डर में Controllerया है Shared

उपाय:

या तो अपने को स्थानांतरित Viewकरने के लिए MyAccountफ़ोल्डर या बनाने के HomeController

विकल्प:

यदि आप अपने को स्थानांतरित नहीं करना चाहते हैं Viewया एक नया बनाना Controllerचाहते हैं तो आप इस लिंक पर देख सकते हैं ।


3
इसके अतिरिक्त यदि आप इस मुद्दे पर हैं, जो मैंने पाया है, तो केवल अपना विचार हटाना सबसे अच्छा है। (इसकी सामग्री को notepadd ++ पर कॉपी करें) अपने नियंत्रक पर जाएं और फिर अपने कार्यक्षेत्र पर राइट क्लिक करें और जनरेट दृश्य का चयन करें फिर आप देख सकते हैं कि आपका नियंत्रक आपके दृष्टिकोण की तलाश में था और तदनुसार अपने विचारों को रखें।
बिल ब्लेंकशिप

14

Microsoft ASP.net MVC में, राउटिंग इंजन, जिसका उपयोग इनकमिंग और आउटगोइंग URL कॉम्बिनेशन को पार्स करने के लिए किया जाता है, कॉन्फ़िगरेशन पर कन्वेंशन के विचार के साथ डिज़ाइन किया गया है। इसका मतलब यह है कि यदि आप रूटिंग इंजन का उपयोग करने वाले कन्वेंशन (नियमों) का पालन करते हैं, तो आपको कॉन्फ़िगरेशन को बदलने की आवश्यकता नहीं है।

ASP.net MVC के लिए रूटिंग इंजन वेब पृष्ठों (.cshtml) की सेवा नहीं करता है। यह आपके कोड में एक URL को एक कक्षा द्वारा नियंत्रित करने का एक तरीका प्रदान करता है, जो आउटपुट स्ट्रीम में पाठ / html को प्रस्तुत कर सकता है, या कन्वेंशन का उपयोग करके लगातार तरीके से .cshtml फ़ाइलों की सेवा कर सकता है।

कन्वेंशन जो रूट करने के लिए प्रयोग किया जाता है के लिए इसी तरह एक नाम के साथ एक कक्षा के लिए एक नियंत्रक मिलान करने के लिए है ControllerNameControllerयानी controller="MyAccount"साधन नामित वर्ग खोजने के MyAccountController। इसके बाद एक्शन आता है, जिसे कंट्रोलर क्लास के भीतर एक फंक्शन में मैप किया जाता है, जो आमतौर पर ए रिटर्न करता है ActionResult। यानी कंट्रोलर की क्लास में action="LoginRegister"एक फंक्शन की तलाश करेगा public ActionResult LoginRegister(){}। यह फ़ंक्शन वापस आ View()सकता है, जिसका नाम कन्वेंशन LoginRegister.cshtmlहोगा और इसे /Views/MyAccount/फ़ोल्डर में संग्रहीत किया जाएगा ।

संक्षेप में, आपके पास निम्नलिखित कोड होंगे:

/Controllers/MyAccountController.cs:

public class MyAccountController : Controller 
{
    public ActionResult LoginRegister()
    {
        return View();
    }
}

/Views/MyAccount/LoginRegister.cshtml: आपकी दृश्य फ़ाइल।


8

जब आप दृश्य वापस कर रहे हैं, तो नीचे लॉग इन करें। मुझे पता है कि यह पीवीसी 5 में किया जा सकता है, यकीन नहीं तो पीवीसी 4 में भी।

 public ActionResult Index()
 {
     return View("~/Views/home/LoginRegister.cshtml");
 }

5

अपने दृश्य (.cshtml फ़ाइल) की निर्माण क्रिया की जाँच करें इसे सामग्री पर सेट किया जाना चाहिए। कुछ मामलों में, मैंने देखा है कि बिल्ड एक्शन कोई भी (गलती से) सेट नहीं किया गया था और यह विशेष दृश्य लक्ष्य मशीन पर तैनात नहीं किया गया था, भले ही आप उस दृश्य को मान्य फ़ोल्डर के तहत दृश्य स्टूडियो प्रोजेक्ट फ़ाइल में मौजूद देखें


1
मेरे मामले में, यह "बिल्ड एक्शन" संपत्ति से संबंधित था, लेकिन मुझे इसे "एंबेडेड रिसोर्स" पर सेट करने की आवश्यकता थी
अली ताहौरी

3

यह एक अनुमति समस्या हो सकती है।

मेरा हाल ही में यही मुद्दा था। परीक्षण के रूप में, मैंने एक सरल hello.html पेज बनाया। जब मैंने इसे लोड करने का प्रयास किया, तो मुझे अनुमतियों के संबंध में एक त्रुटि संदेश मिला। एक बार जब मैंने रूट वेब फ़ोल्डर में अनुमतियाँ जारी कर दीं, तो html पेज और MVC रेंडरिंग मुद्दे दोनों हल हो गए।


मेरे मामले में भी यह अनुमति का मुद्दा था, प्रमाणित उपयोगकर्ताओं को आवेदन के रूट फ़ोल्डर पर पहुंचने की अनुमति दी गई और आसानी से ध्वज को हटाकर समस्या को हल कर दिया गया
मोमिन

2

जांचें कि क्या आपके द्वारा बनाया गया व्यू (.ASPX फ़ाइल) नियंत्रक में उल्लिखित नाम के समान है। उदाहरण के लिए:

 public ActionResult GetView()
 {
    return View("MyView");
 }

इस स्थिति में, Aspx फ़ाइल में GetView.aspx के बजाय MyView.aspx नाम होना चाहिए


2

मुझे यह त्रुटि मिली क्योंकि मैंने अपने दृश्य (और POST कार्रवाई) का नाम बदल दिया।

अंत में मैंने पाया कि मैं नए नाम से बीओटीएच जीईटी और पीओटीटी कार्यों का नाम बदलना भूल गया।

समाधान : दृश्य नाम से मिलान करने के लिए GET और POST दोनों क्रियाओं का नाम बदलें


1

यदि समस्या उत्पादन में रुक-रुक कर होती है, तो यह एक एक्शन विधि के बाधित होने के कारण हो सकता है। उदाहरण के लिए, एक बड़ी फ़ाइल अपलोड से जुड़े POST ऑपरेशन के दौरान, उपयोगकर्ता अपलोड पूरा होने से पहले ब्राउज़र विंडो बंद कर देता है। इस स्थिति में, एक्शन विधि एक अशक्त संदर्भ अपवाद को शून्य मॉडल या दृश्य वस्तु के परिणामस्वरूप फेंक सकती है। एक उपाय यह होगा कि विधि निकाय को एक कोशिश / कैच और रिटर्न नल में लपेटा जाए। ऐशे ही:

[HttpPost]
public ActionResult Post(...)
{
    try
    {
        ...
    }
    catch (NullReferenceException ex)  // could happen if POST is interrupted
    {
        // perhaps log a warning here
        return null;
    }

    return View(model);
}

1

मेरा भी यही मुद्दा था। मैंने "मूवी" के एक दृश्य की नकल की थी और उसी के अनुसार इसका नाम "ग्राहक" रखा। मैंने मॉडलों और नियंत्रकों के साथ भी ऐसा ही किया।

संकल्प यह था ... मैंने ग्राहक दृश्य का नाम बदलकर Customer1 कर दिया और बस एक नया दृश्य बनाया और इसे ग्राहक कहा .... मैंने तब Customer1 कोड को ग्राहक में कॉपी किया।

यह काम किया।

मैं समस्या का वास्तविक कारण जानना पसंद करूंगा।

अद्यतन सिर्फ अनुदान के लिए .... मैंने वापस जाकर सभी नाम बदलने के परिदृश्य को फिर से दोहराया ... और कोई त्रुटि नहीं मिली।


0

यदि आपने उपरोक्त उत्तरों से सभी चीजों की जाँच की है (जो सामान्य गलतियाँ हैं) और आप सुनिश्चित हैं कि आपका दृश्य अपवादों के स्थान पर है, तो आपको Visual Studio को पुनः आरंभ करने की आवश्यकता हो सकती है ।

:(


0

मेरे मामले में, मुझे समस्या को हल करने के लिए RedirectToAction का उपयोग करने की आवश्यकता थी।

[HttpGet]
[ControleDeAcessoAuthorize("Report/ExportToPDF")]
public ActionResult ExportToPDF(int id, string month, string output)
{
    try
    {
        // Validate
        if (output != "PDF")
        {
            throw new Exception("Invalid output.");
        }
        else
        {
            ...// code to generate report in PDF format
        }
    }
    catch (Exception ex)
    {
        return RedirectToAction("Error");
    }
}

[ControleDeAcessoAuthorize("Report/Error")]
public ActionResult Error()
{
    return View();
}

0

मैं थोड़ी देर पहले इसमें भाग गया और इसने मुझे पागल कर दिया क्योंकि यह साधारण निकला। इसलिए मेरे विचार के भीतर मैं एक ग्रिड नियंत्रण का उपयोग कर रहा था जो एक HTTP अनुरोध के माध्यम से ग्रिड के लिए डेटा प्राप्त करता था। एक बार जब मध्य स्तरीय ने मेरा अनुरोध पूरा किया और डेटासेट लौटाया, तो मुझे वही त्रुटि मिली। मेरा विवरण वापस करने का विवरण 'वापसी दृश्य (डेटासेट)' था? ' 'रिटर्न जोंसन (डाटासेट) के बजाय;


0

मैं इस त्रुटि के कारण बयान के अनुचित समापन के कारण आया,

@use (Html.BeginForm ("DeleteSelected", "Employee", FormMethod.Post))

{

} // इस घुंघराले ब्रैकेट को अंत में बंद करने की आवश्यकता है।

Index.cshtml व्यू फ़ाइल में। मैंने प्रोग्राम के अंत में स्टेटमेंट को बंद नहीं किया। इसके बजाय, मैंने अनुचित रूप से बंद करना समाप्त कर दिया और इस त्रुटि में भाग गया।

मुझे यकीन था कि कंट्रोलर एक्शनमेथ कोड की जाँच करने की आवश्यकता नहीं है क्योंकि मैंने कंट्रोलर विधि को ठीक से व्यू में लौटा दिया है। तो यह वह दृश्य है जो प्रतिक्रिया नहीं दे रहा है और समान त्रुटि के साथ मिला है।


0

मुझे इस समस्या का कोई समाधान नहीं मिला, जब तक मुझे पता नहीं चला कि फाइलें मौजूद नहीं थीं! मुझे यह पता लगाने में एक लंबा समय लगा, क्योंकि सॉल्यूशन एक्सप्लोरर फाइलों को दिखाता है!

यहाँ छवि विवरण दर्ज करें

लेकिन जब मैं Index.cshtml पर क्लिक करता हूं तो मुझे यह त्रुटि मिलती है:

यहाँ छवि विवरण दर्ज करें

तो यह दिखाने के लिए इस त्रुटि का कारण था। मुझे उम्मीद है कि यह जवाब किसी की मदद करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.