JSonResult در MVC

 

JSonResult در MVC ، این مقاله به شما پیش زمینه ای در مباحث JsonResult , خصوصیات آن و موارد مختلف استفاده از JsonResult را خواهد داد و همچنین اینکه چگونه میتوانید با استفاده از Test Project در برنامه های MVC , JsonResult را چک کنید.

پس با من در ادامه ی این مقاله ی آموزشی JsonResult همراه باشید …

JSonResult در MVC

JsonResult یک نوع ActionResult در MVC است. کمک میکند تا بتوانید محتوا را در فرمتJavaScript Object Notation (JSON) ارسال کنید.

RoadMap

در این مقاله در مورد مباحث زیر صحبت خواهیم کرد :

۱ در رابطه با JsonResult و خصوصیات آن

  • ContentEncoding
  • ContentType
  • Data
  • JsonRequestBehavior
  • MaxJsonLength
  • RecursionLimit

۲ نمونه های پروژه ها با استفاده از انواع حالات استفاده از JsonResult

  • ارسال محتوای خوش آمدگویی از طریق Json بر اساس نوع کاربر
  • دریافت لیست کاربران در فرمت Json
  • چگونگی ساخت داده های Json در سمت کاربر و ارسال آن به کنترل کننده
  • چگونگی کنترل کردن داده های زیادی از Json

۳ تست کردن واحد های JsonResult

  • درباره ی JsonResult و خصوصیات آن
  • فرمت Json یک فرمت استاندارد باز است. درک فرمت داده به ظاهر آسان به نظر میرسد و اشیای داده شامل مقدار مشخصه ی جفت می باشد.
  • ContentEncoding: کمک به نشان دادن نوع محتوای encoding میکند. Encoding پیش فرض برای Json , UTF-8 است.
  • ContentType: کمک به نشان دادن نوع محتوا میکند. نوع محتوای پیش فرض برای Json برنامه ی /json;charset=utf-8 است.

یادداشت: ContentType و ContentEncoding لازم به معرفی در زمان ارسال داده در فرمت Json نیستند. زیرا Header های HTTP مسئولیت دارند تا به گیرنده , نوعی را که در حال سر و کله زدن با آن هستند بگویند.

Data: این مورد نشان دهنده ی داده های محتوا می باشد. به این معناست که شما چه چیزی را در فرمت Json خواهید فرستاد.

JsonRequestBehavior: این خصوصیت دارای دو گزینه است.

  • AllowGet
  • DenyGet

گزینه ی پیش فرض DenyGet میباشد.

زمانی که شما داده ای را در فرمت Json با استفاده از GetRequest میفرستید لازم است که خصوصیت را به عنوان AllowGet مشخص کنید.

در غیر اینصورت با خطای زیر مواجه میشوید :

“درخواست پذیرفته نیست زیرا داده ی Json به عنوان اطلاعات داده ای حساس در نظر گرفته میشود.”

MaxJsonLength: این کمک میکند تا طول محتوای Json مکسیممی را که فرستاده اید دریافت و تعیین کنید.

مقدار پیش فرض برای این ۲۰۹۷۱۵۲ کاراکتر می باشد که برابر با ۴MB از رشته های داده ای Unicode می باشد.

شما همچنین میتوانید مقدار آن را براساس نیاز خود تغییر دهید. در این مورد در ادامه ی مقاله بیشتر توضیح خواهم داد.

RecursionLimit: نشان دهنده ی تعداد بهره مندی از سطوح اشیای برای پردازش .

مقدار پیش فرض ۱۰۰ می باشد.به این معنا که شما میتوانید اشیای تو در تویی به عمق ۱۰۰ شـئ مرجع داده شده به یکدیگر را سریالی کنید.

در یک حالت کلی مقدار پیش فرض ۱۰۰ قطعا برای زمانی که شما با JsonResult کار میکنید کافیست.

پس نیازی به افزایش آن نیست با وجود اینکه امکان افزایش آن به عنوان یک گزینه وجود دارد.

پروژه های ساده با حالت های مختلف با استفاده از JsonResult

ساخت یک پروژه جدید با نام JsonResultDemo و انتخاب قالب با استفاده از اسکرین شات زیر :

JSonResult در MVC

حال بر روی OK کلیک کنید و صفحه ی نمایش داده شده به صورت زیر خواهد بود :

JSonResult در MVC

همانطور که در قالب بالا میبینید نیاز به انتخاب گزینه ی “Add Unit Tests” نیز است.

پس این به ساخت یک واحد تست پروژه کمک میکند و سپس دوباره بر روی OK کلیک کنید تا پروژه ساخته شود و صفحه ی اولیه ی برنامه همانند زیر نمایش داده شود.

JSonResult در MVC

حال یک کنترلر اضافه کنید و نامی مانند “JsonDemoController” همانند زیر به آن اختصاص دهید.

JSonResult در MVC

بر روی کنترلر کلیک کنید تا پنجره ای مانند زیر باز شود :

JSonResult در MVC

حال بر روی دکمه ی افزودن کلیک کنید و سپس پنجره ای برای وارد کردن نام باز میشود.

حال نام را “JsonDemoController” وارد کنید همانطور که در تصویر زیر نشان داده شده است :

پس از افزودن کنترلر به برنامه , صفحه ی کنترلر مانند زیر خواهد شد :

JSonResult در MVC

تا اینجا شما با ساخت قالب یک پروژه ی ساده به همراه یک کنترلر اضافه به نام “JsonDemoController” آشنا شده اید.

حالت ۱ : ارسال محتوای خوش آمدگویی از طریق Json بر اساس نوع کاربر

در این حالت شما خواهید آموخت که چگونه یک پیغام خوش آمدگویی ساده در فرمت Json از کنترلر ارسال کنید.

حال کد های زیر را جایگزین کد های موجود در فایل JsonDemoController.cs کنید.

using System;   
using System.Collections.Generic;   
using System.Text;   
using System.Web.Mvc;   
using System.Web.Script.Serialization;   
using JsonResultDemo.Models;   
namespace JsonResultDemo.Controllers   
{   
public class JsonDemoController : Controller   
{   
#region ActionControllers   
/// 
<summary>   
/// Welcome Note Message   
/// </summary>


/// <returns>In a Json Format</returns>   
public JsonResult WelcomeNote()   
{   
bool isAdmin = false;   
//TODO: Check the user if it is admin or normal user, (true-Admin, false- Normal user)   
string output = isAdmin ? "Welcome to the Admin User" : "Welcome to the User";   
return Json(output, JsonRequestBehavior.AllowGet);   
}   
}   
}

برنامه را با F6 بسازید و سپس کلید F5 را برای اجرای برنامه بفشارید تا به آدرس زیر بروید.

http://localhost:49568/JsonDemo/WelcomeNote

(امکان دارد که پورت متفاوتی در سمت شما به وجود آید.)

در نهایت صفحه ای همانند زیر خواهید داشت :

JSonResult در MVC

اکنون شما در این حالت چگونگی ارسال رشته های ساده در فرمت Json را میدانید.

حالت ۲ : دریافتی لیست از کاربران در فرمت Json

در این حالت شما لیستی از کاربران را در فرمت Json خواهید فرستاد.

گام اول : کلاسی با نام “UserModel.cs” را همانند زیر بیافزایید.

JSonResult در MVC

 

بر روی کلاس کلیک کنید و سپس لینک نشان داده شده همانند زیر خواهد بود :

JSonResult در MVC

نام را همانند “UserModel.cs” وارد کنید و بر روی دکمه ی افزودن کلیک کنید.

گام دوم : کد قسمت UserMode.cs را با کد های زیر آپدیت کنید.

using System;   
using System.Collections.Generic;   
using System.Linq;   
using System.Web;   
namespace JsonResultDemo.Models   
{   
public class UserModel   
{   
public int UserId { get; set; }   
public string UserName { get; set; }   
public string Company { get; set; }   
}   
} 

گام سوم : متدی به نام GetUsers در فایل JsonDemoController.cs اضافه کنید که لیستی از کاربران را برمیگرداند.

/// 
<summary>   
/// Get the Users   
/// </summary>


/// <returns></returns>   
private List<UserModel> GetUsers()   
{   
var usersList = new List<UserModel>   
{   
new UserModel   
{   
UserId = 1,   
UserName = "Ram",   
Company = "Mindfire Solutions"   
},   
new UserModel   
{   
UserId = 1,   
UserName = "chand",   
Company = "Mindfire Solutions"   
},   
new UserModel   
{   
UserId = 1,   
UserName = "Abc",   
Company = "Abc Solutions"   
}   
};   
return usersList;   
}

گام چهارم : یک متد Action Controller بنام GetUsersData با کد های زیر در فایل JsonDemoController.cs بسازید.

/// 
<summary>   
/// Get tthe Users data in Json Format   
/// </summary>

/// <returns></returns>   
public JsonResult GetUsersData()   
{   
var users = GetUsers();   
return Json(users, JsonRequestBehavior.AllowGet);   
}

گام پنجم : برنامه را با آدرس زیر اجرا کنید.

http://localhost:49568/JsonDemo/GetUsersData

خروجی همانند زیر خواهد بود :

JSonResult در MVC

 

حالت ۳ : ساخت داده های Json در سمت مشتری و ارسال محتوا به کنترلر

در این حالت شما داده های Json را در سمت مشتری خواهید ساخت و سپس آن داده ها به اجرای کنترلر فرستاده میشود. نوع موردنیاز اجرای کنترلر HttpPost است.

گام اول : ساخت یک متد Action Controller به نام نمونه همانند فایل JsonDemoController.cs که در زیر آورده شده است.

/// 
<summary>   
/// Sample View   
/// </summary>

/// <returns></returns>   
public ActionResult Sample()   
{   
return View();   
}

گام دوم : ساخت یک فایل View به نام “Sample.cshtml” با راست کلیک کردن بر روی View() در متد کنترلر اجرای نمونه و سپس بر روی افزودن View در اجرای نمونه مانند زیر کلیک کنید.

JSonResult در MVC

با کلیک بر روی افزودن View پنجره ای باز میشود و گزینه ی “Use a Layout page” را غیر فعال کنید. سپس همانند زیر خواهد بود :

JSonResult در MVC

حال بر روی OK کلیک کنید. سپس فایل sample.cshtml ساخته خواهد شد.

گام سوم : کد های زیر را جایگزین کد های فایل sample.cshtml کنید.

@{   
Layout = null;   
}   
<!DOCTYPE html>   
<html>   
<head>   
<meta name="viewport" content="width=device-width" />   
<title>Create Sample JSON Data and send it to controller</title>   
</head>   
<body>   

<div>   
<label>Create Sample User JSON Data and send it to controller</label>
<input type="button" id="btnUpdateUserDetail" value="Update User Detail" onclick="UpdateUserDetail();"/>   
</div>

</body>   
</html>   
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20src%3D%22~%2FScripts%2Fjquery-1.10.2.min.js%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="script" title="script" />   
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20lang%3D%22en%22%20type%3D%22text%2Fjavascript%22%3E%20%20%20%0Afunction%20UpdateUserDetail()%20%7B%20%20%20%0Avar%20usersJson%20%3D%20GetSampleUsersList()%3B%20%20%20%0Avar%20getReportColumnsParams%20%3D%20%7B%20%20%20%0A%22usersJson%22%3A%20usersJson%20%20%20%0A%7D%3B%20%20%20%0A%24.ajax(%7B%20%20%20%0Atype%3A%20%22POST%22%2C%20%20%20%0Atraditional%3A%20true%2C%20%20%20%0Aasync%3A%20false%2C%20%20%20%0Acache%3A%20false%2C%20%20%20%0Aurl%3A%20'%2FJsonDemo%2FUpdateUsersDetail'%2C%20%20%20%0Acontext%3A%20document.body%2C%20%20%20%0Adata%3A%20getReportColumnsParams%2C%20%20%20%0Asuccess%3A%20function%20(result)%20%7B%20%20%20%0Aalert(result)%3B%20%20%20%0A%7D%2C%20%20%20%0Aerror%3A%20function%20(xhr)%20%7B%20%20%20%0A%2F%2Fdebugger%3B%20%20%20%0Aconsole.log(xhr.responseText)%3B%20%20%20%0Aalert(%22Error%20has%20occurred..%22)%3B%20%20%20%0A%7D%20%20%20%0A%7D)%3B%20%20%20%0A%7D%20%20%20%0Afunction%20GetSampleUsersList()%20%7B%20%20%20%0Avar%20userDetails%20%3D%20%7B%7D%3B%20%20%20%0Avar%20usersList%20%3D%20%5B%5D%3B%20%20%20%0Afor%20(var%20i%20%3D%201%3B%20i%20%3C%3D%203%3B%20i%2B%2B)%20%7B%20%20%20%0AuserDetails%5B%22UserId%22%5D%20%3D%20i%3B%20%20%20%0AuserDetails%5B%22UserName%22%5D%20%3D%20%22User-%20%22%20%2B%20i%3B%20%20%20%0AuserDetails%5B%22Company%22%5D%20%3D%20%22Company-%20%22%20%2B%20i%3B%20%20%20%0AusersList.push(userDetails)%3B%20%20%20%0A%7D%20%20%20%0Areturn%20JSON.stringify(usersList)%3B%20%20%20%0A%7D%20%0A%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="script" title="script" /> 

در زیر خصوصیات فایل Sample.cshtml آورده شده است :

  1.  بدنه ی HTML شامل یک label , about , برای توصیف تابعیت و یک دکمه ی ورودی به همراه یک تابع بنام onclick of the UpdateUserDetail() می باشد.
  2. بخش جاواسکریپت شامل مراجع jQuery و شمال دو تابع است.
  3.  تابع GetSampleUsersList() نمونه ی کاربران را در یک فیلد رشته به فرمت Json برمی گرداند.
  4.  تابع UpdateUserDetail() درخواست ajax از نوع post را برای JsonDemoController با UpdateUserDetail action ارسال میکند.

گام چهارم : یک متد Action به نام UpdateUserDetails در JsonDemoController بسازید که همانند زیر باشد و برای کمک به ارزیابی جزئیات برنامه یک breakpoint در اولین خط این متد قرار دهید.

/// 
<summary>   
/// Update the user details   
/// </summary>

/// <param name="usersJson">users list in JSON Format</param>   
/// <returns></returns>   
[HttpPost]   
public JsonResult UpdateUsersDetail(string usersJson)   
{   
var js = new JavaScriptSerializer();   
UserModel[] user = js.Deserialize<UserModel[]>(usersJson);   
//TODO: user now contains the details, you can do required operations   
return Json("User Details are updated");   
}

گام پنجم : برنامه را بسازید و اجرا کنید (کلید F5 ) با استفاده از آدرس زیر :

http://localhost:49568/JsonDemo/Sample

سپس صفحه ی نمایش خروجی همانند زیر خواهد بود :

JSonResult در MVC

گام ششم : حال بر روی “Update User Details” که در گوشه ی تصویر نشان داده شده است کلیک کنید. سپس نتیجه ی نهایی مانند زیر خواهد بود :

JSonResult در MVC

گام هفتم : تنها با بازنگری تصویر بالا میتوانیم دریابیم که قادر به ارسال داده های Json به کنترلر action از سمت مشتری هستیم همانگونه که قادر به deserialized کردن داده های Json و اختصاص دادن آن داده ها به UserModel entity میباشیم.

حالت چهارم : چگونه حجم عظیمی از داده های Json را کنترل کنیم.

در این حالت شما چگونگی ارسال مقادیر عظیمی از داده های Json را خواهید آموخت.

در حقیقت در حالت های بخصوصی شما باید حجم عظیمی از داده ها را از یک کنترلر به یک View ارسال کنید.

در این زمینه مثال زیر برای شما مفید خواهد بود.

گام اول : متدی با نام GetUsersHugeData() همانند زیر بسازید. این تنها کمک به تولید داده های نمونه کاربران میکند.

/// 
<summary>   
/// Get the huge list of users   
/// </summary>

/// <returns></returns>   
private List<UserModel> GetUsersHugeData()   
{   
var usersList = new List<UserModel>();   
UserModel user;   
for (int i = 1; i < 51000; i++)   
{   
user = new UserModel   
{   
UserId = i,   
UserName = "User-"+i,   
Company = "Company-"+i   
};   
usersList.Add(user);   
}   
return usersList;   
}

گام دوم : یک متد action به نام GetUsersHugeList() همانند زیر در فایل JsonDemoController.cs بسازید.

/// 
<summary>   
/// Get the huge list of Users   
/// </summary>

/// <returns></returns>   
public JsonResult GetUsersHugeList()   
{   
var users = GetUsersHugeData();   
return Json(users, JsonRequestBehavior.AllowGet);   
}

گام سوم : حال برنامه را با آدرس زیر بسازید و اجرا کنید (کلید F5 ) :

http://localhost:49568/JsonDemo/GetUsersHugeList

سپس صفحه ی خطا همانند زیر نمایش داده خواهد شد.

JSonResult در MVC

گام چهارم : برای درست کردن خطای بالا کد زیر را به فایل JsonDemoController.cs اضافه کنید.

این متد ها کمک به ارتقای مقدار خصوصیت MaxJsonLength به Int32.MaxValue میکند.

/// 
<summary>   
/// Override the JSON Result with Max integer JSON lenght   
/// </summary>

/// <param name="data">Data</param>   
/// <param name="contentType">Content Type</param>   
/// <param name="contentEncoding">Content Encoding</param>   
/// <param name="behavior">Behavior</param>   
/// <returns>As JsonResult</returns>   
protected override JsonResult Json(object data, string contentType,   
    Encoding contentEncoding, JsonRequestBehavior behavior)   
{   
    return new JsonResult()   
    {   
        Data = data,   
        ContentType = contentType,
        ContentEncoding = contentEncoding,   
        JsonRequestBehavior = behavior,   
        MaxJsonLength = Int32.MaxValue   
    };   
}  

با همین روش میتوانید مقدار خصوصیت RecursionLimit را افزایش دهید.

همچنین اگر شما به JsonData با عمق (سطح تو در تویی) بیش از ۱۰۰ احتیاج داشته باشید.

گام پنجم : حال برنامه را بسازید و اجرا کنید با آدرس زیر :

http://localhost:49568/JsonDemo/GetUsersHugeList

و سپس حجم عظیمی از داده ها را به جای خطا مشاهده میکنید.

JSonResult در MVC

من کد کامل شده و فرمت شده برای فایل JsonDemoController.cs را برای آنچه که تا الان انجام داده اید در این حالت برایتان ارائه میدهم.

using System;   
using System.Collections.Generic;   
using System.Text;   
using System.Web.Mvc;   
using System.Web.Script.Serialization;   
using JsonResultDemo.Models;   
   
namespace JsonResultDemo.Controllers   
{   
    public class JsonDemoController : Controller   
    {   
        #region ActionControllers   
   
        /// 
<summary>   
        /// Welcome Note Message   
        /// </summary>

        /// <returns>In a JSON Format</returns>   
        public JsonResult WelcomeNote()   
        {   
            bool isAdmin = false;   
            //TODO: Check the user if it is admin or normal user, (true-Admin, false- Normal user)   
            string output = isAdmin ? "Welcome to the Admin User" : "Welcome to the User";   
   
            return Json(output, JsonRequestBehavior.AllowGet);   
        }   
   
        /// 
<summary>   
        /// Get tthe Users data in JSON Format   
        /// </summary>

        /// <returns></returns>   
        public JsonResult GetUsersData()   
        {   
            var users = GetUsers();   
            return Json(users, JsonRequestBehavior.AllowGet);   
        }   
   
        /// 
<summary>   
        /// Sample View   
        /// </summary>

        /// <returns></returns>   
        public ActionResult Sample()   
        {   
            return View();   
        }   
   
        /// 
<summary>   
        /// Update the user details   
        /// </summary>

        /// <param name="usersJson">users list in JSON Format</param>   
        /// <returns></returns>   
        [HttpPost]   
        public JsonResult UpdateUsersDetail(string usersJson)   
        {   
            var js = new JavaScriptSerializer();   
            UserModel[] user = js.Deserialize<UserModel[]>(usersJson);   
   
            //TODO: user now contains the details, you can do required operations   
            return Json("User Details are updated");   
        }   
           
        /// 
<summary>   
        /// Get the huge list of Users   
        /// </summary>

        /// <returns></returns>   
        public JsonResult GetUsersHugeList()   
        {   
            var users = GetUsersHugeData();   
            return Json(users, JsonRequestBehavior.AllowGet);   
        }   
  
        #endregion   
  
  
        #region Methods   
   
        /// 
<summary>   
        /// Get the Users   
        /// </summary>

        /// <returns></returns>   
        private List<UserModel> GetUsers()   
        {   
            var usersList = new List<UserModel>   
            {   
                new UserModel   
                {   
                    UserId = 1,   
                    UserName = "Ram",   
                    Company = "Mindfire Solutions"   
                },   
                new UserModel   
                {   
                    UserId = 1,   
                    UserName = "chand",   
                    Company = "Mindfire Solutions"   
                },   
                new UserModel   
                {   
                    UserId = 1,   
                    UserName = "Abc",   
                    Company = "Abc Solutions"   
                }   
            };   
   
            return usersList;   
        }   
   
        /// 
<summary>   
        /// Get the huge list of users   
        /// </summary>

        /// <returns></returns>   
        private List<UserModel> GetUsersHugeData()   
        {   
            var usersList = new List<UserModel>();   
            UserModel user;   
            for (int i = 1; i < 51000; i++)   
            {   
                user = new UserModel   
                {   
                    UserId = i,   
                    UserName = "User-"+i,   
                    Company = "Company-"+i   
                };   
                usersList.Add(user);   
            }   
   
            return usersList;   
        }   
   
        /// 
<summary>   
        /// Override the Json Result with Max integer JSON lenght   
        /// </summary>

        /// <param name="data">Data</param>   
        /// <param name="contentType">Content Type</param>   
        /// <param name="contentEncoding">Content Encoding</param>   
        /// <param name="behavior">Behavior</param>   
        /// <returns>As JsonResult</returns>   
        protected override JsonResult Json(object data, string contentType,   
            Encoding contentEncoding, JsonRequestBehavior behavior)   
        {   
            return new JsonResult()   
            {   
                Data = data,   
                ContentType = contentType,   
                ContentEncoding = contentEncoding,   
                JsonRequestBehavior = behavior,   
                MaxJsonLength = Int32.MaxValue   
            };   
        }   
  
        #endregion   
    }   
}  

حال شما درباره ی چگونگی استفاده از انواع JsonResult در برنامه ی MVC با حالت های مختلف را میدانید.

حال وقت آن رسیده است که کنترلر های متد Action را با استفاده از JsonDemoController.Test Project تست کنیم.

واحد تست JsonResult در MVC

ویژگی اصلی برنامه های MVC امکان پشتیبانی از روش محور داده های تست شده (TDD) است.

از آنجایی که فایل کنترلر تنها یک نوع فایل کلاس است پس اجرای متد های تست در Test Project آسان است.

حال شما خواهید آموخت که چگونه یک متد JsonResult را در Test Project تست کنید.

گام اول : یک کلاس با نام “JsonDemoControllerTest.cs” را به JsonResultDemo.Tests projects همانند زیر اضافه کنید :

JSonResult در MVC

بر روی کلاس کلیک کنید تا پنجره ای همانند زیر باز شود و سپس نام آن را به “JsonDemoControllerTest.cs” تغییر دهید.

JSonResult در MVC

گام دوم : پس از کلیک بر روی OK صفحه ی نتایج به صورت زیر نمایش داده خواهد شد.

JSonResult در MVC

گام سوم : حال کد زیر را با کد نوشته شده در فایل JsonDemoControllerTest.cs جایگزین کنید.

using System;   
using System.Web.Mvc;   
using Microsoft.VisualStudio.TestTools.UnitTesting;   
using JsonResultDemo.Controllers;   
namespace JsonResultDemo.Tests.Controllers   
{   
[TestClass]   
public class JsonDemoControllerTest   
{   
[TestMethod]   
public void WelcomeNote()   
{   
JsonDemoController controller = new JsonDemoController();   

JsonResult result = controller.WelcomeNote();   
string msg = Convert.ToString(result.Data);   
// Assert   
Assert.AreEqual("Welcome to the User", msg);   
}   
}   
}

مختصر نکاتی درباره ی TestMethod of WelcomeNote() :

یک شئ برای JsonDemoController بسازید.

نتایج متد کنترلر JsonDemoController (نتایج متد WelcomeNote) در پارامتر result از نوع JsonResult.

رشته ی msg همراه با مقداری از JsonResult اختصاص میابد.

در این گام شما چک کردن خروجی مورد انتظار با خروجی واقعی با استفاده از متد Assert را انجام میدهید. در روشی مشابه متد Assert گزینه های دیگری مانند AreNotEqual , AreSame و IsNotNull و غیره را انجام میدهد.

گام چهارم : بر روی متد welcomeNote راست کلیک کنید و بر روی Run Unit Tests کلیک کنید.

سپس صفحه ی نتایج همانند زیر خواهد بود :

JSonResult در MVC

گام پنجم : همچنین میتوانید Run Tests را با کلید های Ctrl+R,T اجرا کنید. سپس میتوانید نتایج را در Test Explorer همانند زیر مشاهده کنید :

JSonResult در MVC

گام ششم : همانطور که در Test Explorer متوجه شدید صفحه ی Test Explorer شامل گزینه های زیادی مانند “Run All” و اجرای گزینه های انتخابی موردنیازاست .

میتوانید هرکدام را امتحان کنید تا به آسانی آنها را درک کنید.

JSonResult در MVC

در روشی مشابه میتوانید متد های Test بیشتری بسازید و این برای چک کردن تابعیت در موارد متفاوت برای ارائه ی نتایج صحیح یا غلط مفید میباشد.

یادداشت : میتوانید پروژه ی نمونه ی مورد بحث بالا را از لینک زیر دانلود کنید :

دانلود

جمع بندی

امیدوارم این مقاله به شما در درک JsonResults و خصوصیات آن و همچنین کاربرد و موارد استفاده ی مختلف از حالت های آن و در نهایت تست کردن JsonResult با استفاده از Test Project کمک کرده باشد.

 

داریوش فرخی

داریوش فرخی هستم از سال 92 شروع به یادگیری برنامه نویسی و از سال 93 در بخش برنامه نویسی و تولید محتوای سایت mspsoft.com مشغول هستم. فعالیتم نیز بیشتر در زمینه های برنامه نویسی با سی شارپ و asp.net بوده است. اوقات فراغتم را هم غالبا با تماشای فیلم یا بازی های کامپیوتری پر میکنم .

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.