त्रुटि का मतलब है कि आप उस दृश्य पर नेविगेट कर रहे हैं जिसका मॉडल टाइपोफ़ Foo
(उपयोग करके @model Foo
) घोषित किया गया है , लेकिन आपने वास्तव में इसे एक मॉडल दिया है जो टाइपोफ़ है Bar
(शब्द शब्दकोश का उपयोग किया जाता है क्योंकि एक मॉडल दृश्य के माध्यम से पास किया जाता है ViewDataDictionary
) ।
त्रुटि के कारण हो सकता है
नियंत्रक विधि से दृश्य (या आंशिक दृश्य) में गलत मॉडल पास करना
सामान्य उदाहरणों में एक क्वेरी का उपयोग करना शामिल है जो एक अनाम वस्तु (या अनाम वस्तुओं का संग्रह) बनाता है और इसे दृश्य में पास करता है
var model = db.Foos.Select(x => new
{
ID = x.ID,
Name = x.Name
};
return View(model);
या किसी ऐसे ऑब्जेक्ट को देखने के लिए ऑब्जेक्ट का संग्रह पास करना जो किसी एकल ऑब्जेक्ट की अपेक्षा करता है
var model = db.Foos.Where(x => x.ID == id);
return View(model);
त्रुटि को आसानी से संकलन समय में उपयोग करने के बजाय दृश्य में मॉडल से मिलान करने के लिए नियंत्रक में मॉडल प्रकार की घोषणा करके पहचाना जा सकता है var
।
गलत मॉडल को एक दृश्य से आंशिक दृश्य में पास करना
निम्नलिखित मॉडल को देखते हुए
public class Foo
{
public Bar MyBar { get; set; }
}
और तब के @model Foo
साथ घोषित एक मुख्य दृश्य और एक आंशिक दृश्य के साथ घोषित किया गया@model Bar
Foo model = db.Foos.Where(x => x.ID == id).Include(x => x.Bar).FirstOrDefault();
return View(model);
मुख्य दृश्य में सही मॉडल लौटाएगा। हालाँकि यदि दृश्य शामिल है तो अपवाद को फेंक दिया जाएगा
@Html.Partial("_Bar")
डिफ़ॉल्ट रूप से, आंशिक दृश्य में पास किया गया मॉडल मुख्य दृश्य में घोषित मॉडल है और आपको इसका उपयोग करने की आवश्यकता है
@Html.Partial("_Bar", Model.MyBar)
Bar
आंशिक दृश्य के उदाहरण को पास करने के लिए । यह भी ध्यान दें कि यदि मान MyBar
है null
(आरंभिक नहीं किया गया है), तो डिफ़ॉल्ट रूप Foo
से आंशिक रूप से पारित हो जाएगा, इस स्थिति में, यह होना चाहिए
@Html.Partial("_Bar", new Bar())
एक लेआउट में एक मॉडल की घोषणा
यदि एक लेआउट फ़ाइल में एक मॉडल घोषणा शामिल है, तो उस लेआउट का उपयोग करने वाले सभी विचारों को उसी मॉडल, या उस मॉडल को प्राप्त करने वाले मॉडल को घोषित करना होगा।
यदि आप एक लेआउट में एक अलग मॉडल के लिए HTML को शामिल करना चाहते हैं, तो लेआउट में, @Html.Action(...)
एक [ChildActionOnly]
विधि को कॉल करने के लिए उस मॉडल को इनिशियलाइज़ करता है और इसके लिए एक आंशिक दृश्य देता है।
return View
बजायreturn PartialView
इतना है कि बस की जांच करने के लिए चलो कुछ