खोज…


परिचय

एमवीसी ऐप में वस्तुओं के साथ काम करते समय, यदि किसी भी वस्तु को एक ही प्रारूप के साथ कई स्थानों पर दिखाया जाना चाहिए, तो हमें किसी प्रकार के मानक लेआउट की आवश्यकता होगी। ASP.NET MVC ने प्रदर्शन और संपादक टेम्प्लेट को शामिल करने के साथ इस तरह के मानकीकरण को आसान बना दिया है। संक्षेप में, प्रदर्शन और संपादक टेम्पलेट्स का उपयोग उपयोगकर्ता को दिखाए गए लेआउट को मानकीकृत करने के लिए किया जाता है, जब कुछ प्रकारों या वर्गों को संपादित या प्रदर्शित करते हैं।

प्रदर्शन टेम्पलेट

नमूना:

 public class User  
 {
    public int ID { get; set; }
    public string FirstName { get; set; }
    public DateTime DateOfBirth { get; set; }
 }

यदि हम उपयोगकर्ताओं को अलग-अलग दृश्यों में प्रदर्शित करना चाहते हैं, तो बेहतर होगा कि इन उपयोगकर्ताओं के लिए एक मानकीकृत लेआउट बनाया जाए जहाँ उन्हें प्रदर्शित करने की आवश्यकता हो। हम इसे प्रदर्शन टेम्पलेट्स का उपयोग करके पूरा कर सकते हैं।

एक डिस्प्ले टेम्प्लेट केवल एक आंशिक दृश्य है जो उस ऑब्जेक्ट के लिए मॉडल-बाउंड है जिसे वह प्रदर्शित करना चाहता है, और Views/Shared/DisplayTemplates डिस्प्लेटेम्पलेट फ़ोल्डर में मौजूद है (हालांकि आप इसे Views/ControllerName/DisplayTemplates डिस्प्लेटेम्पलेट में भी डाल सकते हैं)। इसके अलावा, दृश्य का नाम (डिफ़ॉल्ट रूप से) उस ऑब्जेक्ट का नाम होना चाहिए जिसे आप इसके लिए टेम्पलेट के रूप में उपयोग करना चाहते हैं

दृश्य / साझा / DisplayTemplates / User.cshtml

 @model TemplatesDemo.Models.User
    
<div style="padding-bottom: 10px">
    <p><strong>ID:</strong> @Html.DisplayFor(m => m.ID)</p>
    <p><strong>Name:</strong> @Html.DisplayFor(m => m.FirstName)</p>
    <p><strong>Date of Birth:</strong> @Html.DisplayFor(m => m.DateOfBirth)</p>
</div>
<hr/>

अब, यदि हम डेटाबेस से सभी उपयोगकर्ताओं को प्रदर्शित करना चाहते हैं और उन्हें अलग-अलग दृश्यों में दिखाना चाहते हैं, तो हम केवल उपयोगकर्ताओं की सूची दृश्य में भेज सकते हैं और उन्हें दिखाने के लिए प्रदर्शन टेम्पलेट का उपयोग कर सकते हैं। हम ऐसा करने के लिए दो तरीकों में से एक का उपयोग कर सकते हैं:

Html.DisplayFor()
Html.DisplayForModel()

DisplayFor चयनित संपत्ति के प्रकार के लिए प्रदर्शन टेम्पलेट को कॉल करता है (जैसे Html.DisplayFor(x => x.PropertyName)DisplayForModel दृश्य टेम्पलेट को @model के लिए कॉल करता है।

राय

@model IEnumerable<TemplatesDemo.Models.User>
@{
    ViewBag.Title = "Users";
}

<h2>Users</h2>

@Html.DisplayForModel()

संपादक टेम्पलेट

डिस्प्ले टेम्प्लेट्स का उपयोग किसी ऑब्जेक्ट के लेआउट को मानकीकृत करने के लिए किया जा सकता है, तो अब देखते हैं कि हम इन ऑब्जेक्ट्स के लिए समान काम कैसे कर सकते हैं जब उन्हें संपादित करें। डिस्प्ले टेम्प्लेट की तरह, एडिटर टेम्प्लेट को दिए गए टाइप के लिए कॉल करने के दो तरीके हैं:

Html.EditorFor()
Html.EditorForModel()

संपादक टेम्प्लेट, समान रूप से प्रदर्शित करने के लिए, या तो व्यू / शेयर / एडिटरटेम्पलेट्स या व्यू / कंट्रोलरनेम / एडिटरटेम्पलेट्स में मौजूद होना चाहिए । इस डेमो के लिए, हम उन्हें साझा किए गए फ़ोल्डर में बनाएंगे। फिर से, दृश्य का नाम (डिफ़ॉल्ट रूप से) उस ऑब्जेक्ट का नाम होना चाहिए जिसे आप इसके लिए टेम्पलेट के रूप में उपयोग करना चाहते हैं।

नमूना

public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime DateOfBirth { get; set; }
        public Roles Roles { get; set; }
        public int RoleId { get; set; }
    }

 public class Roles
    {
        public int Id { get; set; }
        public string Role { get; set; }
    }

कहें कि हम डेटाबेस से किसी भी उपयोगकर्ता को कई दृश्यों में संपादित करने में सक्षम होना चाहते हैं। हम इस उद्देश्य के लिए एक ViewModel का उपयोग करेंगे।

ViewModel

public class UserEditorViewModel
    {
        public User User { get; set; }
        public IEnumerable<Roles> Roles { get; set; }
    }

इस ViewModel का उपयोग करके, हम एक संपादक टेम्पलेट बनाएंगे

दृश्य / साझा / EditorTemplates / UserEditorViewModel.cshtml

@model TemplatesDemo.Models.UserEditorViewModel

<div class="form-group">
    @Html.DisplayNameFor(m => m.User.Id)
    @Html.EditorFor(m => m.User.Id)
</div>
<div class="form-group">
    @Html.DisplayNameFor(m => m.User.Name)
    @Html.EditorFor(m => m.User.Name)
</div>
<div class="form-group">
    @Html.DisplayNameFor(m => m.User.DateOfBirth)
    @Html.EditorFor(m => m.User.DateOfBirth)
</div>
<div class="form-group">
    @Html.DisplayNameFor(m => m.User.Roles.Role)
    @Html.DropDownListFor(m => m.User.RoleId, new SelectList(Model.Roles,"Id","Role"))
</div>

हम वांछित उपयोगकर्ता और उपलब्ध भूमिकाओं की सूची प्राप्त करेंगे और उन्हें दृश्यमॉडल UserEditorViewModel में नियंत्रक क्रिया में बांधेंगे और दृश्यमॉडल को दृश्य में भेजेंगे। सादगी के लिए, मैं एक्शन से दृश्यमॉडल शुरू कर रहा हूं

कार्य

 public ActionResult Editor()
        {
            var viewModel = new UserEditorViewModel
            {
                User = new User
                {
                    Id = 1,
                    Name = "Robert",
                    DateOfBirth = DateTime.Now,
                    RoleId = 1
                },
                Roles = new List<Roles>()
                {
                    new Roles
                    {
                        Id = 1,
                        Role = "Admin"
                    },
                    new Roles
                    {
                        Id = 2,
                        Role = "Manager"
                    },
                    new Roles
                    {
                        Id = 3,
                        Role = "User"
                    }
                }
            };

            return View(viewModel);
        }

हम अपनी इच्छानुसार किसी भी दृश्य में निर्मित संपादक टेम्पलेट का उपयोग कर सकते हैं

राय

@model TemplatesDemo.Models.UserEditorViewModel
    
@using (Html.BeginForm("--Your Action--", "--Your Controller--"))
{
    @Html.EditorForModel()
    <input type="submit" value="Save" />
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow