در این مقاله می آموزیم که نمای جزئی چیست و چگونه نمای جزئی را فراخوانی کنیم و در کدام سناریو کدام روش برای تماس مناسب است.
نمای جزئی چیست؟
نمای جزئی شبیه به کنترل کاربر در ASP.NET است.
بیایید یک نمای برای نمایش چند رکورد ایجاد کنیم. اگر نمیدانید چگونه نمای طرحبندی را در زمان اجرا در MVC فراخوانی کنید، لطفاً مقاله قبلی من را بخوانید .
پس از ایجاد موفقیت آمیز پروژه، اجازه دهید تغییراتی در پروژه خود ایجاد کنیم.
- بر روی پوشه مدل کلیک راست کنید سپس "Add" → "Class" را انتخاب کنید و نام آن را "ListEmployee.cs" بگذارید و کد زیر را در آن قرار دهید.
- namespace mvcDemo.Models
- {
- public class ListEmployee
- {
- public int Id { get; set; }
- public string Name { get; set; }
- public string Email { get; set; }
- }
- }
- به HomeController بروید و موارد زیر را بنویسید:
- public ActionResult List()
- {
- List<ListEmployee> listEmployee = new List<ListEmployee>();
- listEmployee.Add(new ListEmployee() { Id = 1, Name = "Pramod", Email = "pramod@yahoo.com" });
- listEmployee.Add(new ListEmployee() { Id = 2, Name = "Ravi", Email = "ravi@yahoo.com" });
- listEmployee.Add(new ListEmployee() { Id = 3, Name = "Rahul", Email = "rahul@yahoo.com" });
- listEmployee.Add(new ListEmployee() { Id = 4, Name = "Deepak", Email = "deepak@yahoo.com" });
- return View(listEmployee);
- }
- بر روی List() کلیک راست کرده و گزینه add view را بزنید و نام آن را List بگذارید.
با این کار مقداری کد تولید خودکار در List.cshtml می نویسد.
- بیایید تغییراتی در List.cshtml ایجاد کنیم.
- @model IEnumerable<mvcDemo.Models.ListEmployee>
- @{
- ViewBag.Title = "List";
- }
- <h2>Employee List</h2>
- <table>
- <tr>
- <th>
- @Html.DisplayNameFor(model => model.Id)
- </th>
- <th>
- @Html.DisplayNameFor(model => model.Name)
- </th>
- <th>
- @Html.DisplayNameFor(model => model.Email)
- </th>
- </tr>
- @foreach (var item in Model) {
- <tr>
- <td>
- @Html.DisplayFor(modelItem => item.Id)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.Name)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.Email)
- </td>
- </tr>
- }
- </table>
خروجی
بیایید آن را با استفاده از نمای جزئی بسازیم.
- پوشه Views را باز کنید سپس پوشه Shared را انتخاب کنید.
- روی پوشه Shared کلیک راست کرده سپس Add View را انتخاب کنید و نام آن را _Employee بگذارید.
- بیایید تغییراتی در _Employee.cshtml ایجاد کنیم.
- @model IEnumerable<mvcDemo.Models.ListEmployee>
- <table>
- <tr>
- <th>
- @Html.DisplayNameFor(model => model.Id)
- </th>
- <th>
- @Html.DisplayNameFor(model => model.Name)
- </th>
- <th>
- @Html.DisplayNameFor(model => model.Email)
- </th>
- </tr>
- @foreach (var item in Model) {
- <tr>
- <td>
- @Html.DisplayFor(modelItem => item.Id)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.Name)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.Email)
- </td>
- </tr>
- }
- </table>
- در List.cshtml تمام کدها را حذف کرده و در کد زیر قرار دهید.
- @model IEnumerable<mvcDemo.Models.ListEmployee>
- @{
- ViewBag.Title = "List";
- }
- <h2>Employee List</h2>
- @Html.Partial("_Employee")
- پروژه را اجرا کنید و خروجی را ببینید. آنچه را که انتظار داشتیم به دست خواهیم آورد.
تفاوت بین Html.Partial و Html.RenderPartial
- نوع بازگشت متد RenderPartial باطل است در حالی که متد Partial MvcHtmlString را برمی گرداند.
- نحو.
- Calling Html.Partial method
- @Html.Partial(“_partialViewName”);
- Calling Html.RenderPartial method
- @{Html.RenderPartial(“_partialViewName”);}
توجه: از منظر عملکرد، رندر مستقیم به بخار خروجی همیشه بهتر است، بنابراین Html.RenderPartial انتخاب خوبی است اگر نیازی به دستکاری روی خروجی نداشته باشیم. اگر دستکاری روی جریان خروجی لازم باشد، Html.Partial بهتر از Html.RenderPartial است.