/ / एएसपी.नेट एमवीसी 3: मास्टर टेम्पलेट के लिए ViewModel? - asp.net, asp.net-mvc-3

एएसपी.नेट एमवीसी 3: मास्टर टेम्पलेट के लिए ViewModel? - asp.net, asp.net-mvc-3

जब मैंने अपना पहला खाली एमवीसी 3 प्रोजेक्ट बनाया, तो यह /Views/Shared/_Layout.cshtml फ़ाइल की सामग्री है:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
</head>

<body>
@RenderBody()
</body>
</html>

पहली बात यह है कि मैं नोटिस करता हूं कि <title>@ViewBag.Title</title>। आखिरी चीज जो मैं करना चाहता हूं वह दृढ़ता से टाइप किए गए व्यू मॉडेल के बजाय गतिशील "व्यूबैग" का उपयोग कर रही है।

मैं अपना _Layout.cshtml कैसे बदलूं ताकि मास्टर टेम्पलेट इसके बजाय दृढ़-टाइप किए गए व्यूमोडेल का उपयोग कर सके?

उत्तर:

उत्तर № 1 के लिए 4

आप आसानी से उपयोग कर सकते हैं @model मॉडल प्रकार को परिभाषित करने के लिए, लेकिन कौन सेट करेगामास्टर पेज के मॉडल या इसे बनाते हैं? नियंत्रक अपने स्वयं के विचार को संभालता है और मास्टर पेज के लिए मॉडल प्रत्येक नियंत्रक में बनाए गए मॉडल के आधार पर अलग होगा।

तो, आप अपने द्वारा पारित सभी मॉडल बनाना चाहते हैंविचारों को आधार मॉडल वर्ग से प्राप्त होता है जिसमें मास्टर पेज के लिए आवश्यक गुण होते हैं और मास्टर पेज को मॉडल प्रकार के रूप में आधार प्रकार बनाते हैं, लेकिन यह बहुत बदसूरत होगा।

मैं यहां शीर्षक जैसे साधारण मामलों के लिए इसके साथ रहने का सुझाव देता हूं, अगर आपको लगता है कि आप वहां बहुत सी चीजें करते हैं, तो अपने स्वयं के नियंत्रक, कार्रवाई और देखें जो साझा भागों को पूरा करते हैं, और कॉल करें Html.RenderAction() उस निष्पादित करने के लिए मास्टर पेज में।


http://gurustop.net