سلام کاربران عزیز ، حال شما خوبه ؟ امیدوارم که شاد و سلامت باشید . وقتتون بخیر . امروز میخوام در مورد انتقال اطلاعات از Controller به View در MVC صحبت کنیم وکمی بیاموزیم باما همراه باشید.
در این نکته قصد داریم اولین ارتباط را بین Controller و View برقرار کنیم .برای پاس دادن اطلاعات از Controller به View راه های متفاوتی وجود دارد یکی از این راهها استفاده از viewBag میباشد.viewBag یک کلاس نوع داینامیک است ،یعنی در زمان کد نویسی به تعداد دلخواه و با نام دلخواه میتوان برای آن Property در نظر گرفت . برای اینکار مثال زیر را باهم مرور میکنیم.ابتدا یک کنترلر جدید ایجاد میکنیم یک ActionResult جدید به نام Students ایجاد میکنیم.و با استفاده از ViewBag دو Property به نام های name و family ایجاد کرده و به آنها مقدار دلخواه اختصاص میدهیم.
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
۱۶
۱۷
۱۸
۱۹
۲۰
۲۱
۲۲
۲۳
۲۴
۲۵
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace WebApplication2.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
public ActionResult Students()
{
ViewBag.name = “Nafiseh”;
ViewBag.family = “hoseini”;
return View();
}
}
}
}
حال داخل view مربوطه کدهای زیر را وارد میکنیم:
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
۱۶
@{
ViewBag.Title = “Students”;
}
<h2>student
</h2>
<p>
Name:@ViewBag.name
</p>
<p>
family:@ViewBag.family
</p>
<p>
age:@ViewBag.age
</p>
وقتی از صفحه اجرا بگیریم نتیجه به صورت زیر قابل مشاهده است.
Image
حال میخواهیم بدانیم چگونه ارتباط Model را با View و Controller برقرار کنیم. ابتدا به پوشه ی Models رفته و یک کلاس جدید به نام student ایجاد میکنیم.
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
۱۶
۱۷
۱۸
۱۹
۲۰
۲۱
۲۲
۲۳
۲۴
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebApplication2.Models
{
public class student
{
public student()
{
}
public student(string name,string family,int age)
{
this.Age = age;
this.Family = family;
this.Name = name;
}
public int Age { get; set; }
public string Name { get; set; }
public string Family { get; set; }
}
}
برای ارتباط آن با کنترلر به داخل فایل HomeController رفته و SecondStudens را ایجاد میکنیم در اینجا باید از روی کلاس student داخل Models یک شی ایجاد کنیم تا به Property های آن دسترسی داشته باشم .داخل View نام view مربوطه که برای این ActionResult ایجاد کردیم را مینویسیم و پارامتر مربوطه در اینجا s که یک شی ایجاد شده از روی کلاسی است که در مدل ساخته ایم را بر میگردانیم
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
۱۶
۱۷
۱۸
۱۹
۲۰
۲۱
۲۲
۲۳
۲۴
۲۵
۲۶
۲۷
۲۸
۲۹
۳۰
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace WebApplication2.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
public ActionResult Students()
{
ViewBag.name = “Nafiseh”;
ViewBag.family = “hoseini”;
return View();
}
public ActionResult SecondStudents()
{
WebApplication2.Models.student s = new Models.student(“Nafiseh”, “Hoseini”, 2);
return View(“SecondStudents”, s);
}
}
}
حال روی SecondStudents کلیک راست کرده و Add view را انتخاب میکنیم اینبار گزینه ی Details را برای Template و نام کلاس Student را از Model class انتخاب میکنیم.
Image
همانطور که مشاهده میکنیم داخل viewمربوطه تمامی Propertyکه به مدل مربوط میشود به طور خود کار ایجاد شده است و میتوان از آن اجرا گرفت.
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
۱۶
۱۷
۱۸
۱۹
۲۰
۲۱
۲۲
۲۳
۲۴
۲۵
۲۶
۲۷
۲۸
۲۹
۳۰
۳۱
۳۲
۳۳
۳۴
۳۵
۳۶
۳۷
۳۸
۳۹
۴۰
۴۱
۴۲
@model WebApplication2.Models.student
@{
ViewBag.Title = “SecondStudents”;
}
<h2>SecondStudents</h2>
<div>
<h4>student</h4>
<hr />
<dl class=”dl-horizontal”>
<dt>
@Html.DisplayNameFor(model => model.Age)
</dt>
<dd>
@Html.DisplayFor(model => model.Age)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Family)
</dt>
<dd>
@Html.DisplayFor(model => model.Family)
</dd>
</dl>
</div>
<p>
@Html.ActionLink(“Edit”, “Edit”, new { /* id = Model.PrimaryKey */ }) |
@Html.ActionLink(“Back to List”, “Index”)
</p>