0
آموزش دسترسی به اطلاعات با Entity Framework و HTML Helpers در MVC
آموزش دسترسی به اطلاعات با Entity Framework و HTML Helpers در MVC
در این پست میخواهیم چگونگی دسترسی به اطلاعات پایگاه داده با Entity Framework و HTML Helpers در صفحات MVC را آموزش دهیم.
امروز نمایش اطلاعات جدول و دسترسی به جزئیات با استفاده از Route را در MVC خواهیم آموخت. برای این کار ابتدا یک پروژه از نوع MVC انتخاب میکنیم. و نوع آن را Empty در نظر میگیریم.

در ادامه یک پایگاه داده ایجاد و جدولی به صورت زیر در آن ایجاد میکنیم.
CREATE TABLE [dbo].[Students] (
[ID] INT NULL,
[Name] NVARCHAR (50) NULL,
[Gender] NVARCHAR (6) NULL,
[Fees] INT NULL
);
سپس وارد پوشه Models شده و دوتا کلاس با نام های Students و StudentsContext ایجاد میکنیم و
کدنویسی برای مشخص کردن مقادیر جدول را به صورت زیر در کلاس Students می نویسیم.
[Table("Students")]
public class Students
{
public int ID { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public int Fees { get; set; }
}
و در کلاس StudentsContext میخواهیم DbContext را تعریف کنیم.
public class StudentsContext : DbContext
{
public DbSet<Students> Students { get; set; }
}
سپس برای دسترسی به داده ها از طریق کنترلر باید اقدام کنیم. داخل پوشه Controllers یک کنترلر با نام StudentsController ایجاد میکنیم و کدنویسی زیر را در آن انجام میدهیم.
public class StudentsController : Controller
{
public ActionResult Index()
{
StudentsContext studentsContext = new StudentsContext();
List<Students> students = studentsContext.Students.ToList();
return View(students);
}
public ActionResult Details(int id)
{
StudentsContext studentsContext = new StudentsContext();
Students students = studentsContext.Students.Single(stu => stu.ID == id);
return View(students);
}
}
نکته :
دوصفحه درنظر گرفیتم یکی بانام Index و دیگری بانام Details که اولی برای نمایش نام دانشجو درنظر گرفتیم و دومی برای جزئیات دانشجو که براساس شناسه هردانشجو میخواهیم جزئیات را نمایش دهیم.
سپس داخل پوشه Views شده و یک پوشه بانام Students ایجاد و دو صفحه بالا را در آن ایجاد میکنیم.
برای صفحه Index کد زیر را می نویسیم.
@model IEnumerable
<MVCDataAccessByEntityFrame.Models.Students>
@using MVCDataAccessByEntityFrame.Models;
<h2>لیست دانشجویان</h2>
<ol start="1" style="font-size:large; font-weight:bold;">
@foreach (Students students in @Model)
{
<li id="item" style="color:red;">
@Html.ActionLink(students.Name, "Details", new { id = students.ID })
</li>
}
</ol>
توجه داشته باشید که نام هر دانشجو به صورت ActionLink نمایش داده میشود که براساس ID منتقل میشه به صفحه جزئیات و اطلاعات را نمایش می دهد.
برای صفحه جزئیات هم کد زیر را قرار میدهیم.
@model MVCDataAccessByEntityFrame.Models.Students
<table border="1" dir="rtl" style="color:blue; border-color:brown; text-align:center;" width="20%">
<tr>
<td><b>کد دانشجویی:</b></td>
<td>
@Model.ID
</td>
</tr>
<tr>
<td><b>نام و نام خانوادگی:</b></td>
<td>@Model.Name</td>
</tr>
<tr>
<td><b>جنسیت:</b></td>
<td>@Model.Gender</td>
</tr>
<tr>
<td><b>شهریه:</b></td>
<td>@Model.Fees</td>
</tr>
</table>
<br />
@Html.ActionLink("بازگشت به صفحه اصلی", "Index")
نکته : قسمت آخر با استفاده از Html.ActionLink امکان بازگشت به صفحه اصلی را فراهم کردیم.
برای اتصال پایگاه هم به پروژه داخل فایل کانفیگ دستور زیر را قرار میدهیم.
<connectionStrings>
<add name="StudentsContext" connectionString="data source = .; database = MVC; integrated security = SSPI" providerName="System.Data.SqlClient"/>
</connectionStrings>
برای Route شدن به صفحه جزئیات هم باید از پوشه App_Start کد زیر را در صفحه RouteConfig قرار می دهیم.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Students", action = "Index", id = UrlParameter.Optional }
);
}
پس از اجرا حاصل کار به این صورت است :
نظر / سوال