توضیحات و دانلود

ارسال چند Model به یک View در ASP.Net MVC Razor
0 0
ارسال چند Model به یک View در ASP.Net MVC Razor

با سلام در این مقاله، با یک مثال توضیح خواهیم داد که چگونه چندین Model را به یک View در ASP.Net MVC Razor منتقل کنید.
به طور پیش فرض یک View می تواند تنها با یک Model مرتبط شود و از این رو در این مقاله توضیح خواهیم داد که چگونه می توان چندین Model را به یک View در ASP.Net MVC Razor منتقل کرد.
بانک اطلاعاتی
در اینجا از پایگاه Northwind استفاده می کنیم. شما می توانید آن را از اینجا دانلود کنید.
پایگاه داده Northwind را دانلود و نصب کنید
فضاهای نام
شما باید فضای نامهای زیر را وارد کنید.

using System.Dynamic;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using System.Collections.Generic;

Model
در زیر دو کلاس Model است.
CustomerModel
کلاس مدل زیر برای جمع آوری داده ها از جدول مشتری استفاده می شود.

public class CustomerModel
{
    public string CustomerId { get; set; }
    public string CustomerName { get; set; }
    public string City { get; set; }
    public string Country { get; set; }
}

EmployeeModel
کلاس مدل زیر برای جمع آوری اطلاعات از جدول کارکنان استفاده می شود.

public class EmployeeModel
{
    public string EmployeeId { get; set; }
    public string EmployeeName { get; set; }
    public string City { get; set; }
    public string Country { get; set; }
}

Controller
Controller شامل یک روش Index Action است. دراین روش ، ابتدا یک شی از کلاس ExpandoObject ایجاد شده و آن instance به یک متغیر از نوع پویا اختصاص داده شده است.
توجه :

ExpandoObject  برای اضافه کردن و حذف اشیاء به طور پویا در زمان اجرا اجازه می دهد. این عضو از نام فضای  System.Dynamic است و دارای توانایی ذخیره اشیاء در سلسله مراتبی پیچیده است.
سوابق مشتریان و کارکنان با استفاده از ADO.Net جمع آوری شده و با استفاده از مجموعه های عمومی از کلاس های Model مربوطه آنها بازگشت می شود.

مجموعه های بازگشتی به شیء کلاس ExpandoObject اضافه می شوند و سپس به View می فرستند.

public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        dynamic model = new ExpandoObject();
        model.Customers = GetCustomers();
        model.Employees = GetEmployees();
        return View(model);
    }
 
    private static List<CustomerModel> GetCustomers()
    {
        List<CustomerModel> customers = new List<CustomerModel>();
        string query = "SELECT TOP 10 CustomerID, ContactName, City, Country FROM Customers";
        string constr = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand(query))
            {
                cmd.Connection = con;
                con.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        customers.Add(new CustomerModel
                        {
                            CustomerId = sdr["CustomerID"].ToString(),
                            CustomerName = sdr["ContactName"].ToString(),
                            City = sdr["City"].ToString(),
                            Country = sdr["Country"].ToString()
                        });
                    }
                }
                con.Close();
                return customers;
            }
        }
    }
 
    private static List<EmployeeModel> GetEmployees()
    {
        List<EmployeeModel> employees = new List<EmployeeModel>();
        string query = "SELECT EmployeeID, (FirstName + ' ' + LastName) [Name], City, Country FROM Employees";
        string constr = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand(query))
            {
                cmd.Connection = con;
                con.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        employees.Add(new EmployeeModel
                        {
                            EmployeeId = sdr["EmployeeID"].ToString(),
                            EmployeeName = sdr["Name"].ToString(),
                            City = sdr["City"].ToString(),
                            Country = sdr["Country"].ToString()
                        });
                    }
                    con.Close();
                    return employees;
                }
            }
        }
    }
}


View
در داخل View ، ابتدا باید فضای نامی را برای دسترسی به کلاسهای Model وارد کنید.
سپس شما باید Model را برای View پویا اعلام کنید .
برای سوابق View، دو جداول HTML مورد استفاده قرار می گیرند و با تکرار بر مجموعه های عمومی اشیاء Model، ردیف ها به جداول HTML اضافه می شوند.

@using Multiple_Model_MVC.Models
@model dynamic
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
</head>
<body>
    <table cellpadding="0" cellspacing="0">
        <tr>
            <th>CustomerID</th>
            <th>Contact Name</th>
            <th>City</th>
            <th>Country</th>
        </tr>
        @foreach (CustomerModel customer in Model.Customers)
        {
            <tr>
                <td>@customer.CustomerId</td>
                <td>@customer.CustomerName</td>
                <td>@customer.City</td>
                <td>@customer.Country</td>
            </tr>
        }
    </table>
    <hr/>
    <table cellpadding="0" cellspacing="0">
        <tr>
            <th>EmployeeID</th>
            <th>Employee Name</th>
            <th>City</th>
            <th>Country</th>
        </tr>
        @foreach (EmployeeModel employee in Model.Employees)
        {
            <tr>
                <td>@employee.EmployeeId</td>
                <td>@employee.EmployeeName</td>
                <td>@employee.City</td>
                <td>@employee.Country</td>
            </tr>
        }
    </table>
</body>
</html>

عکس روی صفحه

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :