यदि आप दृढ़ता से टाइप डेटा कक्षाओं को देखने के लिए अपने विचारों को प्राथमिकता देते हैं तो यह आपके लिए काम कर सकता है। अन्य समाधान शायद सही हैं लेकिन यह डिजाइन और व्यावहारिकता IMHO के बीच एक अच्छा संतुलन है।
मास्टर पृष्ठ इसे करने के लिए एक जोरदार टाइप किया दृश्य डेटा प्रासंगिक केवल जानकारी युक्त वर्ग लेता है:
public class MasterViewData
{
public ICollection<string> Navigation { get; set; }
}
कि मास्टर पृष्ठ का उपयोग कर प्रत्येक दृश्य इसकी जानकारी युक्त और मास्टर पृष्ठों से पाने एक जोरदार टाइप किया दृश्य डेटा वर्ग लेता है दृश्य डेटा:
public class IndexViewData : MasterViewData
{
public string Name { get; set; }
public float Price { get; set; }
}
जब से मैं व्यक्तिगत नियंत्रकों मास्टर पेजेस डेटा एक साथ लगाने के बारे में कुछ भी पता नहीं करना चाहते हैं मैं एक कारखाने जो प्रत्येक नियंत्रक से पारित कर दिया है कि तर्क को संपुटित:
public interface IViewDataFactory
{
T Create<T>()
where T : MasterViewData, new()
}
public class ProductController : Controller
{
public ProductController(IViewDataFactory viewDataFactory)
...
public ActionResult Index()
{
var viewData = viewDataFactory.Create<ProductViewData>();
viewData.Name = "My product";
viewData.Price = 9.95;
return View("Index", viewData);
}
}
विरासत में अच्छी तरह से संबंध देखने पर मास्टर से मेल खाता है लेकिन जब यह प्रतिपादन partials/उपयोगकर्ता नियंत्रण की बात आती है मैं उनके विचार डेटा लिखे जाने वाले पृष्ठों डेटा, उदा देखने जाएगा
public class IndexViewData : MasterViewData
{
public string Name { get; set; }
public float Price { get; set; }
public SubViewData SubViewData { get; set; }
}
<% Html.RenderPartial("Sub", Model.SubViewData); %>
यह केवल उदाहरण कोड है और है के रूप में संकलित करने के लिए इरादा नहीं है। एएसपी.NET एमवीसी 1.0 के लिए बनाया गया है।
स्रोत
2009-04-14 01:33:07
मुझे लगता है मैं कैसे कामयाब रहे पर एक गाइड लिखा था इस: http://www.britishdeveloper.co.uk/2010/06/mvc-pass-viewmasterpage-model.html मदद करनी चाहिए – BritishDeveloper