فعال کردن Intellisense برای ViewBag در MVC

چهارشنبه 28 مرداد 1394

در این مقاله یا فعال سازی Intellisense برای مقادیر ارسالی از کنترلر که به وسیله View Bag به ویو منتقل می شوند آشنا خواهیم شد و با فراگیری آن می توان تمامی View Bag هارا همراه با قابلیت Intellisense استفاده کرد.

فعال کردن Intellisense برای ViewBag در MVC

در ابتدای مقاله با مفهوم ViewBag آشنا خواهیم شد و ویژگی های آن را ذکر خواهیم کرد.سپس اقدام به ایجاد یک پروژه عملی برای فعال سازی  Intellisense در ViewBag می کنیم.امید است بتوانید استفاده لازم را تا انتهای مقاله ببرید.
 

ViewBag :
1-View Bag یک پراپرتی Dynamic است که از جدید ترین ویژگی هایی که در C# 4.0 برای متغیر های Dynamic نام برده شده استفاده می کند.
2-View Bag در واقع از همان روش ViewDate برای ارسال اطلاعات متناظر استفاده می کند.
3-View Bag یک پراپرتی از کلاس ControllerBase است.
4-View Bag پس از Redirect دوباره برابر Null می شود.
5-View Bag نیاز به Casting یا تبدیل نوع ندارد.

 

حالا اقدام به ایجاد پروژه می کنیم.

ابتدا پروژه ای برای اجرای عملیات در Visual Studio ایجاد می کنیم زبان پروژه ما C# و از نوع Asp.Net Empty می باشد ، با کلیک بر روی تیک MVC پروژه را برای میزبانی MVC آماده می کنیم.

 

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

سپس کد های مربوط به آن را می نویسم:
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Intellisense.Models
{
    public class Persons
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string FatherName { get; set; }
        public int Age { get; set; }
        public int Mobile { get; set; }
        public string Address { get; set; }
    }
}

 

در این مرحله اقدام به ایجاد کنترلری برای پاس دادن اطلاعات از ViewBag و استفاده از آن ها در View می کنیم.


کنترلر از نوع Empty و نام آن را Home قرار میدهیم ، کد های زیر برای ارسال لیستی از افراد از طریق کنترلر کاربرد دارند که با کامنت گذاری در مورد آن توضیحاتی ارائه داده ام :
 

using Intellisense.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace EnablingIntellis4VBag.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            // لیست افراد
            var listOfPerson = new List<Persons>
            {
                new Persons() {Id = 1, FirstName = "Parsa", LastName = "Karami", 
                FatherName = "Mohammad", Age = 40, Mobile = 989122222, Address = "..."},
                new Persons() {Id = 2, FirstName = "Iman", LastName = "Madaeni", 
                FatherName = "Kamran", Age = 40, Mobile = +981211111, Address = "..."},
                new Persons() {Id = 3, FirstName = "Sajad", LastName = "Bagherzade", 
                FatherName = "Reza", Age = 40, Mobile = +981211111, Address = "..."}
            };
            // قرار دادن لیست افراد در ViewBag
            ViewBag.Persons = listOfPerson;
            // ارسال ViewBag
            return View();
        }
    }
}

 

حالا با کلیک راست بر روی نام Action اقدام به ایجاد یک View از آن می کنیم:

برای استفاده از ViewBag در View از دو روش می توانیم استفاده کنیم :
1- روش دات (.)
2- روش Type Casting

 

روش اول دات (.)

در این روش که فاقد Intellisense است در Foreach از ViewBag.Persons استفاده می کنیم.

ویوی زیر را مشاده کنید :

@{
    ViewBag.Title = "ViewBag";
}
<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<br /><br /><br />
<style>
    *{
        font-family:W_yekan;
        font-size:17px;
    }
    table, tr, td, th {
        padding: 10px;
        text-align:center;
    }
</style>
<table class="table table-striped" dir="rtl">
        <tr>
            <th>
                شناسه
            </th>
            <th>
                نام
            </th>
            <th>
                نام خانوادگی
            </th>
            <th>
                نام پدر
            </th>
            <th>
                سن
            </th>
            <th>
                شماره تماس
            </th>
            <th>
                آدرس
            </th>
        </tr>
    
    <tbody>
        @{foreach (var item in ViewBag.Persons)
        {
            <tr>
                <td>
                    @item.Id
                </td>
                <td>
                    @item.FirstName
                </td>
                <td>
                    @item.LastName
                </td>
                <td>
                    @item.FatherName
                </td>
                <td>
                    @item.Age
                </td>
                <td>
                    @item.Mobile
                </td>
                <td>
                    @item.Address
                </td>
            </tr>
        }
        }
    </tbody>
</table>


روش TypeCasting

در روش TypeCasting ابتدا اقدام به Casting برای ViewBag می کنیم و سپس در Foreach استفاده می کنیم که در این روش ما Intellisense داریم.
 

کد های زیر مربوط به روش TypeCasting می باشد:
 

@using Intellisense.Models
@{
    ViewBag.Title = "ViewBag";
    //راه اول که توصیه می شود
    var ListPerson1 = ViewBag.Persons as IEnumerable<Persons>;
    //راه دوم
    var ListPerson2 = (IEnumerable<Persons>)ViewBag.Persons;
}
<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<br /><br /><br />
<style>
    *{
        font-family:W_yekan;
        font-size:17px;
    }
    table, tr, td, th {
        padding: 10px;
        text-align:center;
    }
</style>
<table class="table table-striped" dir="rtl">
        <tr>
            <th>
                شناسه
            </th>
            <th>
                نام
            </th>
            <th>
                نام خانوادگی
            </th>
            <th>
                نام پدر
            </th>
            <th>
                سن
            </th>
            <th>
                شماره تماس
            </th>
            <th>
                آدرس
            </th>
        </tr>
    
    <tbody>
        @{foreach (var item in ListPerson1)
        {
            <tr>
                <td>
                    @item.Id
                </td>
                <td>
                    @item.FirstName
                </td>
                <td>
                    @item.LastName
                </td>
                <td>
                    @item.FatherName
                </td>
                <td>
                    @item.Age
                </td>
                <td>
                    @item.Mobile
                </td>
                <td>
                    @item.Address
                </td>
            </tr>
        }
        }
    </tbody>
</table>


حالا خروجی پروژه را نیز می توانید مشاهده کنید.

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید