یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی
🎯 ثبت نام
بستن تبلیغات
تسلط کامل بر سی‌شارپ با یک دوره پروژه‌محور

یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شی‌گرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفه‌ای و امکانات کامل!

مشاهده بیشتر
تسلط جامع بر MVC Core برای توسعه وب حرفه‌ای

یادگیری MVC Core از مبانی تا پیشرفته: شی‌گرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژه‌های کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!

مشاهده بیشتر

آموزش استفاده از CRUD با ASP.NET Core MVC Web App به همراه ADO.NET

استفاده از CRUD با ASP.NET Core MVC Web App با استفاده از ADO.NET

معرفی

در این مقاله من چگونگی ایجاد یک برنامه وب MVC در Asp.net Core 2.0 با استفاده از ADO.NET را توضیح می دهم.ما یک نمونه سیستم مدیریت رکورد کارمندان(Employee Record Management System) به همراه عملیات CRUD ایجاد خواهیم کرد.

ما از Visual Studio 2017 (نسخه 15.3.5 یا بالاتر) و SQL Server استفاده خواهیم کرد.

پیش نیاز

  • Install .NET Core 2.0.0 or above SDK
  • Install Visual Studio 2017 Community Edition (Version 15.3.5 or above)

حال ما آماده هستیم تا یک برنامه MVC ایجاد کنیم.

ایجاد جدول و روش های ذخیره شده(Creating Table and Stored Procedures)

ما از یک جدول DB برای ذخیره همه سوابق کارکنان استفاده خواهیم کرد.

SQL Server را باز کرده و با استفاده از اسکریپت زیر جدول tblEmployee ایجاد کنید:

1
2
3
4
5
6
7
8
Create table tblEmployee(   
    EmployeeId int IDENTITY(1,1) NOT NULL,   
    Name varchar(20) NULL,   
    City varchar(20) NULL,   
    Department varchar(20) NULL,   
    Gender varchar(6) NULL   
)  
<button></button>

در حال حاضر، ما متد های ذخیره شده برای add، delete، update و get را برای اطلاعات کارکنان ایجاد می کنیم.

1
2
3
4
5
6
7
8
9
10
11
12
13
Create procedure spAddEmployee    
(   
    @Name VARCHAR(20),    
    @City VARCHAR(20),   
    @Department VARCHAR(20),   
    @Gender VARCHAR(6)   
)   
as    
Begin    
    Insert into tblEmployee (Name,City,Department, Gender)    
    Values (@Name,@City,@Department, @Gender)    
End  
<button></button>

وارد کردن یک رکورد کارمند

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Create procedure spUpdateEmployee     
(     
   @EmpId INTEGER ,   
   @Name VARCHAR(20),    
   @City VARCHAR(20),   
   @Department VARCHAR(20),   
   @Gender VARCHAR(6)   
)     
as     
begin     
   Update tblEmployee      
   set Name=@Name,     
   City=@City,     
   Department=@Department,   
   Gender=@Gender     
   where EmployeeId=@EmpId     
End 
<button></button>

حذف یک رکورد کارمند

1
2
3
4
5
6
7
8
9
Create procedure spDeleteEmployee    
(     
   @EmpId int     
)     
as      
begin     
   Delete from tblEmployee where EmployeeId=@EmpId     
End  
<button></button>

مشاهده تمام Recordsهای کارمند

1
2
3
4
5
6
7
Create procedure spGetAllEmployees   
as   
Begin   
    select *   
    from tblEmployee   
End 
<button></button>

حالا بخش پایگاه داده ما کامل شده است. در اینجا، ما برای ایجاد برنامه MVC با استفاده از ویژوال استودیو ادامه خواهیم داد.

ایجاد برنامه وب MVC

Visual Studio را باز کنید و File >> New >> Project را انتخاب کنید.

آموزش Asp.net MVC Core

پس از انتخاب پروژه، یک پنجره "New Project" باز خواهد شد. (.NET Core) را از منوی Visual C# از پانل سمت چپ انتخاب کنید:

سپس، "ASP.NET Core Web Application" را از نوع پروژه های موجود انتخاب کنید. نام پروژه را به عنوان MVCDemoApp قرار دهید و OK را فشار دهید. به این تصویر مراجعه کنید.

آموزش Asp.net MVC Core

پس از کلیک روی Ok، یک کادر جدید باز می شود که درخواست انتخاب قالب پروژه را می دهد. شما می توانید دو منوی drop-down در سمت چپ پنجره قالب را مشاهده کنید. "NET Core" و "ASP.NET Core 2.0" را از این منو drop-down انتخاب کنید. سپس، "Web application(Model-View-Controller) " را انتخاب کنید و OK را فشار دهید.

آموزش Asp.net MVC Core

اکنون پروژه ما باز خواهد شد. شما می توانید پوشه های Models، Views و Controllers که در حال حاضر ایجاد شده است را مشاهده کنید. ما فایل های خود را فقط به این پوشه ها اضافه خواهیم کرد.

اضافه کردن Controllerبه برنامه

روی پوشه Controllers راست کلیک کرده و Add >> Item New را انتخاب کنید

آموزش Asp.net MVC Core

کادر محاوره ای "Add New Item" باز خواهد شد. Web را از پانل سمت چپ انتخاب کنید، سپس “MVC Controller Class” را از پانل templates انتخاب کنید و نام را به عنوان EmployeeController.cs قرار دهید. OK را فشار دهید.

آموزش Asp.net MVC Core

حالا EmployeeController ما ایجاد شده است. ما تمام business logic را در این controller قرار خواهیم داد.

افزودن مدل به برنامه

بر روی پوشه Models کلیک راست کرده و Add >> Class را انتخاب کنید. نام کلاس خود را Employee.cs. این کلاس شامل properties های مدل کارکنان ما خواهد بود.

یک فایل کلاس دیگر را به پوشه Models اضافه کنید. نام آن را به عنوان EmployeeDataAccessLayer.cs. قرار دهید.این کلاس شامل عملیات مرتبط با بانک اطلاعاتی ما خواهد بود.

اکنون پوشه Models دارای ساختار زیر است.

آموزش Asp.net MVC Core

Employee.cs باز کنید و کد زیر را در آن قرار دهید. از آنجا که ما اعتبار سنجی های مورد نیاز را به فیلدهای کلاس Employee اضافه می کنیم، بنابراین باید ازفضای نام System.ComponentModel.DataAnnotations استفاده کنیم.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.Linq; 
using System.Threading.Tasks; 
   
namespace MVCDemoApp.Models 
    public class Employee 
    
        public int ID { get; set; } 
        [Required] 
        public string Name { get; set; } 
        [Required] 
        public string Gender { get; set; } 
        [Required] 
        public string Department { get; set; } 
        [Required] 
        public string City { get; set; } 
    
<button></button>

EmployeeDataAccessLayer.cs باز کرده و کد زیر را برای مدیریت عملیات پایگاه داده در آن قرار دهید. اطمینان حاصل کنید که connection string خود را قرار داده اید.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.SqlClient; 
using System.Linq; 
using System.Threading.Tasks; 
   
namespace MVCDemoApp.Models 
    public class EmployeeDataAccessLayer 
    
        string connectionString = "Put Your Connection string here"
   
        //To View all employees details   
        public IEnumerable< Employee > GetAllEmployees() 
        
            List< Employee > lstemployee = new List< Employee >(); 
   
            using (SqlConnection con = new SqlConnection(connectionString)) 
            
                SqlCommand cmd = new SqlCommand("spGetAllEmployees", con); 
                cmd.CommandType = CommandType.StoredProcedure; 
   
                con.Open(); 
                SqlDataReader rdr = cmd.ExecuteReader(); 
   
                while (rdr.Read()) 
                
                    Employee employee = new Employee(); 
   
                    employee.ID = Convert.ToInt32(rdr["EmployeeID"]); 
                    employee.Name = rdr["Name"].ToString(); 
                    employee.Gender = rdr["Gender"].ToString(); 
                    employee.Department = rdr["Department"].ToString(); 
                    employee.City = rdr["City"].ToString(); 
   
                    lstemployee.Add(employee); 
                
                con.Close(); 
            
            return lstemployee; 
        
   
        //To Add new employee record   
        public void AddEmployee(Employee employee) 
        
            using (SqlConnection con = new SqlConnection(connectionString)) 
            
                SqlCommand cmd = new SqlCommand("spAddEmployee", con); 
                cmd.CommandType = CommandType.StoredProcedure; 
   
                cmd.Parameters.AddWithValue("@Name", employee.Name); 
                cmd.Parameters.AddWithValue("@Gender", employee.Gender); 
                cmd.Parameters.AddWithValue("@Department", employee.Department); 
                cmd.Parameters.AddWithValue("@City", employee.City); 
   
                con.Open(); 
                cmd.ExecuteNonQuery(); 
                con.Close(); 
            
        
   
        //To Update the records of a particluar employee 
        public void UpdateEmployee(Employee employee) 
        
            using (SqlConnection con = new SqlConnection(connectionString)) 
            
                SqlCommand cmd = new SqlCommand("spUpdateEmployee", con); 
                cmd.CommandType = CommandType.StoredProcedure; 
   
                cmd.Parameters.AddWithValue("@EmpId", employee.ID); 
                cmd.Parameters.AddWithValue("@Name", employee.Name); 
                cmd.Parameters.AddWithValue("@Gender", employee.Gender); 
                cmd.Parameters.AddWithValue("@Department", employee.Department); 
                cmd.Parameters.AddWithValue("@City", employee.City); 
   
                con.Open(); 
                cmd.ExecuteNonQuery(); 
                con.Close(); 
            
        
   
        //Get the details of a particular employee 
        public Employee GetEmployeeData(int? id) 
        
            Employee employee = new Employee(); 
   
            using (SqlConnection con = new SqlConnection(connectionString)) 
            
                string sqlQuery = "SELECT * FROM tblEmployee WHERE EmployeeID= " + id; 
                SqlCommand cmd = new SqlCommand(sqlQuery, con); 
   
                con.Open(); 
                SqlDataReader rdr = cmd.ExecuteReader(); 
   
                while (rdr.Read()) 
                
                    employee.ID = Convert.ToInt32(rdr["EmployeeID"]); 
                    employee.Name = rdr["Name"].ToString(); 
                    employee.Gender = rdr["Gender"].ToString(); 
                    employee.Department = rdr["Department"].ToString(); 
                    employee.City = rdr["City"].ToString(); 
                
            
            return employee; 
        
   
        //To Delete the record on a particular employee 
        public void DeleteEmployee(int? id) 
        
   
            using (SqlConnection con = new SqlConnection(connectionString)) 
            
                SqlCommand cmd = new SqlCommand("spDeleteEmployee", con); 
                cmd.CommandType = CommandType.StoredProcedure; 
   
                cmd.Parameters.AddWithValue("@EmpId", id); 
   
                con.Open(); 
                cmd.ExecuteNonQuery(); 
                con.Close(); 
            
        
    
<button></button>

حال برای ایجاد Views ها اقدام می کنیم.

افزودن Views به برنامه

برای اضافه کردن views ها برای controller class مان، ما باید یک پوشه در داخل پوشه Views با همان نام controller ایجاد کنیم و سپس views هایمان را به آن پوشه اضافه کنیم.

روی پوشه Views کلیک راست کرده و سپس Add >> New Folder را وارد کنید و پوشه را به عنوان Employee نام بگذارید.

آموزش Asp.net MVC Core

اکنون روی پوشه Views / Employee کلیک راست کرده و سپس Add >> Item New را انتخاب کنید.

آموزش Asp.net MVC Core

کادر محاوره ای " Add New Item " باز خواهد شد. Web را از پانل سمت چپ انتخاب کنید، سپس "MVC View Page" را از پانل templates انتخاب کنید و نام را به عنوان Index.cshtml قرار دهید. OK را فشار دهید.

بنابراین ما اولین view را ایجاد کرده ایم. به طور مشابه 4 view بیشتر در پوشه Views / Employee، Create.cshtml، Delete.cshtml، Details.cshtml و Edit.cshtml را اضافه کنید.

از آنجا که view های ما ایجاد شده است، ما برای نمایش عملیات CRUD، کدها را در View و Controller قرار می دهیم.

ایجاد View

این view برای اضافه کردن اطلاعات کارمند جدید به پایگاه داده استفاده می شود.

Create.cshtml را باز کرده و کدهای زیر را در آن قرار بدهید.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@model MVCDemoApp.Models.Employee 
   
@{ 
    ViewData["Title"] = "Create"
< h2 >Create< /h2 > 
< h4 >Employees< /h4 > 
< hr / >
< div class="row"
    < div class="col-md-4"
        < form asp-action="Create"
            < div asp-validation-summary="ModelOnly" class="text-danger" >< /div > 
            < div class="form-group"
                < label asp-for="Name" class="control-label" >< /label > 
                < input asp-for="Name" class="form-control" / >
                < span asp-validation-for="Name" class="text-danger" >< /span > 
            < /div > 
            < div class="form-group"
                < label asp-for="Gender" class="control-label" >< /label > 
                < select asp-for="Gender" class="form-control"
                    < option value="" >-- Select Gender --< /option > 
                    < option value="Male" >Male< /option > 
                    < option value="Female" >Female< /option > 
                < /select > 
                < span asp-validation-for="Gender" class="text-danger" >< /span > 
            < /div > 
            < div class="form-group"
                < label asp-for="Department" class="control-label" >< /label > 
                < input asp-for="Department" class="form-control" / >
                < span asp-validation-for="Department" class="text-danger" >< /span > 
            < /div > 
            < div class="form-group"
                < label asp-for="City" class="control-label" >< /label > 
                < input asp-for="City" class="form-control" / >
                < span asp-validation-for="City" class="text-danger" >< /span > 
            < /div > 
            < div class="form-group"
                < input type="submit" value="Create" class="btn btn-default" / >
            < /div > 
        < /form > 
    < /div > 
< /div > 
< div > 
    < a asp-action="Index" >Back to List< /a > 
< /div > 
@section Scripts { 
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} 
<button></button>

برای مدیریت عملیات پایگاه داده، ما یک object از کلاس EmployeeDataAccessLayer در کلاس EmployeeController ایجاد خواهیم کرد.

1
2
3
4
5
6
7
8
9
10
public class EmployeeController : Controller 
    EmployeeDataAccessLayer objemployee = new EmployeeDataAccessLayer(); 
   
    // GET: /< controller >/ 
    public IActionResult Index() 
    {  
    
 
<button></button>

برای مدیریت business logic ایجاد شده ، EmployeeController.cs را باز کرده و کد زیر را در آن قرار دهید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[HttpGet]   
public IActionResult Create()   
{   
    return View();   
}   
   
[HttpPost]   
[ValidateAntiForgeryToken]   
public IActionResult Create([Bind] Employee employee)   
{   
    if (ModelState.IsValid)   
    {   
        objemployee.AddEmployee(employee);   
        return RedirectToAction("Index");   
    }   
    return View(employee);   
}  
<button></button>

ویژگی [Bind] با پارامتر " employee " برای محافظت در مقابل حملات over-posting استفاده می شود.

Index View

این view کلیه سوابق کارمندهای موجود در پایگاه داده را نمایش می دهد. علاوه بر این، ما نیز متدهای Edit ، Details و Delete را برای هر رکورد ارائه خواهیم کرد.

Index.cshtml را باز کرده و کد زیر را در آن قرار دهید.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
@model IEnumerable< MVCDemoApp.Models.Employee > 
      
@{ 
        ViewData["Title"] = "Index"
    
< h2 >Index< /h2 > 
< p > 
    < a asp-action="Create" >Create New< /a > 
< /p > 
< table class="table"
    < thead > 
        < tr > 
            < th > 
                @Html.DisplayNameFor(model = > model.Name) 
            < /th > 
            < th > 
                @Html.DisplayNameFor(model = > model.Gender) 
            < /th > 
            < th > 
                @Html.DisplayNameFor(model = > model.Department) 
            < /th > 
                            < th > 
                @Html.DisplayNameFor(model = > model.City) 
            < /th > 
            < th >< /th > 
        < /tr > 
    < /thead > 
    < tbody > 
        @foreach (var item in Model) 
        
            < tr > 
                < td > 
                    @Html.DisplayFor(modelItem = > item.Name) 
                < /td > 
                < td > 
                    @Html.DisplayFor(modelItem = > item.Gender) 
                < /td > 
                < td > 
                    @Html.DisplayFor(modelItem = > item.Department) 
                < /td > 
                < td > 
                    @Html.DisplayFor(modelItem = > item.City) 
                < /td > 
                < td > 
                    < a asp-action="Edit" asp-route-id="@item.ID" >Edit< /a > | 
                    < a asp-action="Details" asp-route-id="@item.ID" >Details< /a > | 
                    < a asp-action="Delete" asp-route-id="@item.ID" >Delete< /a > 
                < /td > 
            < /tr > 
        
    < /tbody > 
< /table > 
<button></button>

برای به کار بردن business logic در Index view ، EmployeeController.cs باز کرده و کد های زیر را در Index method قرار دهید:

1
2
3
4
5
6
7
8
public IActionResult Index() 
    List< Employee > lstEmployee = new List< Employee >(); 
    lstEmployee = objemployee.GetAllEmployees().ToList(); 
   
    return View(lstEmployee); 
<button></button>

Edit View

این view ما را داده های موجود برای کارمندان را ویرایش کنیم.

Edit.cshtml را باز کرده و کدهای زیر را در آن قرار دهید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@model MVCDemoApp.Models.Employee 
   
@{ 
    ViewData["Title"] = "Edit"
< h2 >Edit< /h2 > 
< h4 >Employees< /h4 > 
< hr / >
   
< div class="row"
    < div class="col-md-4"
        < form asp-action="Edit"
            < div asp-validation-summary="ModelOnly" class="text-danger" >< /div > 
            < input type="hidden" asp-for="ID" / >
            < div class="form-group"
                < label asp-for="Name" class="control-label" >< /label > 
                < input asp-for="Name" class="form-control" / >
                < span asp-validation-for="Name" class="text-danger" >< /span > 
            < /div > 
            < div class="form-group"
                < label asp-for="Gender" class="control-label" >< /label > 
                < select asp-for="Gender" class="form-control"
                    < option value="" >-- Select Gender --< /option > 
                    < option value="Male" >Male< /option > 
                    < option value="Female" >Female< /option > 
                < /select > 
                < span asp-validation-for="Gender" class="text-danger" >< /span > 
            < /div > 
            < div class="form-group"
                < label asp-for="Department" class="control-label" >< /label > 
                < input asp-for="Department" class="form-control" / >
                < span asp-validation-for="Department" class="text-danger" >< /span > 
            < /div > 
                < div class="form-group"
                < label asp-for="City" class="control-label" >< /label > 
                < input asp-for="City" class="form-control" / >
                < span asp-validation-for="City" class="text-danger" >< /span > 
            < /div >             
            < div class="form-group"
                < input type="submit" value="Save" class="btn btn-default" / >
            < /div > 
        < /form > 
    < /div > 
< /div > 
< div > 
    < a asp-action="Index" >Back to List< /a > 
< /div > 
@section Scripts { 
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} 
<button></button>

برای به کار بردن business logic در Edit view ، EmployeeController.cs باز کرده و کد های زیر را در Edit method قرار دهید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[HttpGet] 
public IActionResult Edit(int? id) 
    if (id == null) 
    
        return NotFound(); 
    
    Employee employee = objemployee.GetEmployeeData(id); 
   
    if (employee == null) 
    
        return NotFound(); 
    
    return View(employee); 
   
[HttpPost] 
[ValidateAntiForgeryToken] 
public IActionResult Edit(int id, [Bind]Employee employee) 
    if (id != employee.ID) 
    
        return NotFound(); 
    
    if (ModelState.IsValid) 
    
        objemployee.UpdateEmployee(employee); 
        return RedirectToAction("Index"); 
    
    return View(employee); 
<button></button>

همانطور که می توانید متوجه شوید ما دو متد Edit داریم، یکی برای HttpGet و دیگری برای HttpPost. متد HttpGet Edit داده های کارکنان را استخراج می کند و fields های ویرایش را می نویسد. هنگامی که کاربر بعد از ویرایش رکورد دکمه ذخیره را کلیک کند، یک درخواست پستی ایجاد می شود که توسط متد HttpPost Edit انجام می شود.

Details View

این view جزئیات یک کارمند خاص را نمایش می دهد.

Details.cshtml را باز کرده و کدهای زیر را در آن قرار دهید.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@model MVCDemoApp.Models.Employee   
@{ 
    ViewData["Title"] = "Details"
< h2 >Details< /h2 > 
< div > 
    < h4 >Employees< /h4 > 
    < hr / >
    < dl class="dl-horizontal"
        < dt > 
            @Html.DisplayNameFor(model = > model.Name) 
        < /dt > 
        < dd > 
            @Html.DisplayFor(model = > model.Name) 
        < /dd > 
        < dt > 
            @Html.DisplayNameFor(model = > model.Gender) 
        < /dt > 
        < dd > 
            @Html.DisplayFor(model = > model.Gender) 
        < /dd > 
        < dt > 
            @Html.DisplayNameFor(model = > model.Department) 
        < /dt > 
        < dd > 
            @Html.DisplayFor(model = > model.Department) 
        < /dd > 
        < dt > 
            @Html.DisplayNameFor(model = > model.City) 
        < /dt > 
        < dd > 
            @Html.DisplayFor(model = > model.City) 
        < /dd > 
    < /dl > 
< /div > 
< div > 
    < a asp-action="Edit" asp-route-id="@Model.ID" >Edit< /a > | 
    < a asp-action="Index" >Back to List< /a > 
< /div >
<button></button>

برای به کار بردن business logic در Details view ، EmployeeController.cs باز کرده و کد های زیر را در Details method قرار دهید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[HttpGet] 
public IActionResult Details(int? id) 
    if (id == null) 
    
        return NotFound(); 
    
    Employee employee = objemployee.GetEmployeeData(id); 
   
    if (employee == null) 
    
        return NotFound(); 
    
    return View(employee); 
<button></button>

Delete View

این view ما را برای حذف اطلاعات کارکنان کمک خواهد کرد.

Delete.cshtml را باز کرده و کدهای زیر را در آن قرار دهید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@model MVCDemoApp.Models.Employee 
   
@{ 
    ViewData["Title"] = "Delete"
< h2 >Delete< /h2 > 
< h3 >Are you sure you want to delete this?< /h3 > 
< div > 
    < h4 >Employees< /h4 > 
    < hr / >
    < dl class="dl-horizontal"
        < dt > 
            @Html.DisplayNameFor(model = > model.Name) 
        < /dt > 
        < dd > 
            @Html.DisplayFor(model = > model.Name) 
        < /dd > 
        < dt > 
            @Html.DisplayNameFor(model = > model.Gender) 
        < /dt > 
        < dd > 
            @Html.DisplayFor(model = > model.Gender) 
        < /dd > 
        < dt > 
            @Html.DisplayNameFor(model = > model.Department) 
        < /dt > 
        < dd > 
            @Html.DisplayFor(model = > model.Department) 
        < /dd > 
        < dt > 
            @Html.DisplayNameFor(model = > model.City) 
        < /dt > 
        < dd > 
            @Html.DisplayFor(model = > model.City) 
        < /dd > 
    < /dl >
    < form asp-action="Delete"
        < input type="hidden" asp-for="ID" / >
        < input type="submit" value="Delete" class="btn btn-default" / >
        < a asp-action="Index" >Back to List< /a > 
    < /form > 
< /div > 
<button></button>

برای به کار بردن Delete logic در Details view ، EmployeeController.cs باز کرده و کد های زیر را در Delete method قرار دهید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[HttpGet] 
public IActionResult Delete(int? id) 
    if (id == null) 
    
        return NotFound(); 
    
    Employee employee = objemployee.GetEmployeeData(id); 
   
    if (employee == null) 
    
        return NotFound(); 
    
    return View(employee); 
   
[HttpPost, ActionName("Delete")] 
[ValidateAntiForgeryToken] 
public IActionResult DeleteConfirmed(int? id) 
    objemployee.DeleteEmployee(id); 
    return RedirectToAction("Index"); 
<button></button>

برای تکمیل عملیات حذف ما نیاز به دو اکشن داریم که پارامتر یکسان دارند(Employee Id).اما دو اکشن با نام و signature یکسان خطای compile ایجاد می کند و اگر ما نام اکشن Delete را عوض کنیم routingقادر نخواهد بود آن را پیدا کند ، همانطور که asp.net URL های مربوط به action methods ها را بر اساس نام نشان می دهد.بنابراین برای حل این مسئله ویژگی (ActionName("Delete")) را به متد DeleteConfirmed اضافه می کنیم. این ویژگی نقشه برداری برای سیستم مسیریابی را انجام می دهد به طوری که یک URL که شامل / Delete / برای یک درخواست POST است تا متد DeleteConfirmed را پیدا می کند.

زمانی که بر روی لینک Delete در Index page کلید می کنیم ،یک درخواست Get فرستاده می شود و یک View از employee با استفاده از HttpGet Delete method بازگردانده می شود. هنگامی که ما بر روی دکمه Delete در این viewکلیک می کنیم، یک درخواست Post برای حذف رکورد ارسال می شود که توسط متد HttpPost DeleteConfirmed پردازش می شود.انجام عملیات حذف در پاسخ به یک درخواست Get(یا برای عملیات edit ، create و یا هر عملیات دیگری که داده ها را تغییر می دهد) یک حفره امنیتی را باز می کند.از این رو، ما دو متد جداگانه داریم.

ما اولین برنامه ASP.NET Core MVC را ایجاد کرده ایم. قبل از راه اندازی برنامه، route URLs را پیکربندی خواهیم کرد. فایل Startup.cs برای تنظیم routing باز کرده و با استفاده از Scroll به پایین رفته تا به متد app.UseMvc برسید جایی که می توانید route url تنظیم کنید.

اطمینان حاصل کنید که route url شما مانند این است:

1
2
3
4
5
6
7
app.UseMvc(routes => 
    routes.MapRoute( 
        name: "default"
        template: "{controller=Home}/{action=Index}/{id?}"); 
}); 
<button></button>

این url pattern در واقع HomeController را به عنوان default controller تنظیم می کند و متد Index را به عنوان default action method تعریف می کند.در حالی که پارامتر ID درواقع optional است.پارامتر های Default و optional نیازی به حضور در URL ندارند.اگر ما هیچ controller name در URL نداشته باشیم HomeController به عنوان default controller گرفته می شود و متد Index از HomeController به عنوان default اکشن گرفته میشود.به طور مشابه اگر ما فقط نام Controller را به URL اضافه کنیم ، آنگاه به اکشن Index از controller حرکت خواهیم کرد.

حالا F5 را فشار دهید تا برنامه را اجرا شود و با افزودن / Employee در URL، به Employee controller بروید.

روی CreateNew کلیک کنید تا به Create view بروید. یک رکورد کارمند جدید اضافه کنید.

اگر ما در هنگام ایجاد record کارمند از داده ها در هر زمینه غافل شدیم، پیغام خطای اعتبار سنجی فیلد مورد نیاز را دریافت خواهیم کرد.

پس از قرار دادن داده ها در همه fields ها، روی دکمه " Create" کلیک کنید. رکورد کارمند جدید ایجاد خواهد شد و شما را به Index view هدایت می کند و سوابق همه کارکنان را نمایش می دهد. در اینجا می توانیم متد های Edit، Details، و Deleteرا نیز ببینیم.

اگر میخواهیم یک رکورد کارمندی که موجود است را ویرایش کنیم، روی لینک Edit Action کلیک کنید. این Edit View را به صورت زیر باز می کند که ما می توانیم داده های کارمند را تغییر دهیم.

آموزش Asp.net MVC Core

در اینجا ما کارمند Swati را Department را از Finance به HR تغییر دادیم. بر روی "Save" کلیک کنید تا به Index view بازگردید تا تغییرات به روز شده را به صورت highlighted در تصویر زیر مشاهده کنید.

آموزش Asp.net MVC Core

اگر ما در هنگام ویرایش records کارمند از هر fields ای دست برداریم، سپس Edit view نیز پیام خطای اعتبار سنجی مورد نیاز را نمایش خواهد داد.

آموزش Asp.net MVC Core

اگر می خواهید جزئیات هر کارمند را ببینید، سپس روی لینک details کلیک کنید، که Details view را باز می کند، همانطور که در تصویر زیر نشان داده شده است.

آموزش Asp.net MVC Core

بر روی Back to List کلیک کنید تا Index view باز شود. حالا ما عملیات حذف را روی یک کارمند به نام Venkat انجام خواهیم داد.بر روی لینک Delete کلیک کنید تا Delete view باز شود و از شما تاییده برای درخواست حذف بگیرد.

آموزش Asp.net MVC Core

هنگامی که ما بر روی دکمه Delete کلیک میکنیم، درخواست HttpPost برای حذف رکورد کارکنان ارسال می شود و ما به Index view هدایت می شویم. در اینجا می بینیم که کارمند با نام Venkat از رکورد ما حذف شده است.

آموزش Asp.net MVC Core

نتیجه

ما در مورد چگونگی ایجاد یک برنامه وب MVC در Asp.net Core 2.0 با استفاده از ADO.NET را آموختیم.

1396/08/12 3591 2162
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...