मैं ASP.NET MVC के साथ चारों ओर खेल रहा है और एक सवाल था। या शायद यह एक चिंता है कि मैं यह गलत कर रहा हूँ। बस मेरे पंखों को थोड़ा सा खींचने के लिए एक लंगड़ा स्थल पर काम करना। मुझे खेद है कि यह प्रश्न बिल्कुल संक्षिप्त नहीं है।ASP.Net MVC और RenderPartial डब्ल्यू/संबंधित पथ
ठीक है, यहां परिदृश्य है। जब उपयोगकर्ता घर/सूचकांक पर जाता है, तो पृष्ठ को उत्पादों की एक सूची और लेखों की एक सूची दिखानी चाहिए। फ़ाइल लेआउट इस तरह है (दाल मेरे डेटा का उपयोग परत है):
Controllers Home Index Views Home Index inherits from ViewPage Product List inherits from ViewUserControl<IEnumerable<DAL.Product>> Single inherits from ViewUserControl<DAL.Product> Article List inherits from ViewUserControl<IEnumerable<DAL.Article>> Single inherits from ViewUserControl<DAL.Article>
Controllers.HomeController.Index produces a View whose ViewData contains two entries, a IEnumerable<DAL.Product> and a IEnumerable<DAL.Article>.
View.Home.Index will use those view entries to call:
Html.RenderPartial("~/Views/Product/List.ascx", ViewData["ProductList"])
and Html.RenderPartial("~/Views/Article/List.ascx", ViewData["ArticleList"])
View.Product.List will call
foreach(Product product in View.Model)
Html.RenderPartial("Single", product);
View.Article.List does something similar to View.Product.List
यह दृष्टिकोण हालांकि विफल रहता है। दृष्टिकोण मुझे समझ में आता है, लेकिन शायद इन एमवीसी प्लेटफ़ॉर्म के साथ अधिक अनुभव वाला कोई व्यक्ति बेहतर तरीके से पहचान लेगा।
ऊपर View.Product.List अंदर एक त्रुटि पैदा करता है। Html.RenderPartial("Single",...)
पर कॉल शिकायत करता है कि "एकल" दृश्य नहीं मिला था। त्रुटि इंगित करता है:
The partial view 'Single' could not be found. The following locations were searched: ~/Views/Home/Single.aspx ~/Views/Home/Single.ascx ~/Views/Shared/Single.aspx ~/Views/Shared/Single.ascx
क्योंकि मैं RenderAction() उत्पाद में एक दृश्य से फोन कर रहा था, मैं क्रम दृश्य के भीतर "एकल" दृश्य \ उत्पाद देखने के लिए उम्मीद है। ऐसा लगता है कि लुकअप नियंत्रक के सापेक्ष है जिसने वर्तमान दृश्य के बजाय मूल दृश्य (/ नियंत्रक/गृह आमंत्रित/दृश्य/उत्पाद) का आह्वान किया है।
View.Product.List will call
foreach(Product product in View.Model)
Html.RenderPartial("~/Views/Product/Single.ascx", product);
बजाय
View.Product.List will call
foreach(Product product in View.Model)
Html.RenderPartial("Single", product);
इस सुधार में काम करता है लेकिन .. मुझे समझ नहीं आता क्यों मैं करने के लिए आवश्यक:
तो मैं बदलते दृश्य \ उत्पाद इसका समाधान करने में, ऐसी है कि कर रहा हूँ दृश्य का पूरा पथ निर्दिष्ट करें। यह मूल नियंत्रक के दृष्टिकोण पथ के बजाय वर्तमान दृश्य के पथ के सापेक्ष सापेक्ष नाम के व्याख्या के लिए मुझे समझ में आएगा। मैं किसी भी उपयोगी मामले के बारे में नहीं सोच सकता जहां वर्तमान दृश्य की बजाय नियंत्रक के दृष्टिकोण से संबंधित नाम का अर्थ उपयोगी है (सामान्य मामले को छोड़कर जहां वे समान हैं)।
इस समय मेरे पास एक प्रश्न चिह्न होना चाहिए? जोर देने के लिए यह वास्तव में एक सवाल है।
बस इस भर में ठोकर खाई संबंधित वस्तु की तलाश में (मुझे पता है इसके 6 महीने से अधिक पुराना)। लेकिन आप रेंडरएक्शन() का उपयोग करके उल्लेख करते हैं, हालांकि आपके सभी उदाहरण रेंडरपार्टियल() का उपयोग करते हैं, क्या यह एक टाइपो है? मुझे लगता है कि रेंडरएक्शन (रेंडरपार्टियल के विपरीत) इस स्थिति में काम करना चाहिए? –