إرجاع أنواع مختلفة من المحتوى من Action Methods

-


في الدروس السابقة تعاملنا مع الاناع View و String التي يمكن ارجاعها من Action. لكن هذه ليست الأشياء الوحيدة. في الواقع، يمكن في Actions Methods إرجاع أنواع كثيرة مثل JSON وHTTP.

تمام خلونا نتعرف بالتفصيل على هذه الاناع.

Returning JSON from Action

Json هي اختصار ل (JavaScript Object Notation)، والتي هي عبارة عن Object، يتم ارجاعها من Action على شكل JsonResult class

ارجاع ()Json في action موضوع معقد وكبير، سنكتفي هنا بإرجاع مجموعة من البيانات فقط لغرض توضيح الفكرة وسيتم لاحقا إضافة المزيد من التفاصيل حول ذلك.

تمام التمام ننتقل الان الى StudentsController ثم نضيف action  جديده باسم GetStudentDetails واضف الكود التالي :

public JsonResult GetStudentDetails()
        {
            var model = new Models.StudentsModel
            {
                CustomerNo = "2100001",
                FullName = "Layan Hatem"
            };
            return Json(new { Data = model });
        }
تمام نفهم الكود :
استخدمنا StudentModel لتعبئة بعض البيانات، وفي هذا action استخدمنا رقم الطالب، واسم الطالب، وبعدها عملنا ارجاع هذه البيانات على شكل Json .
حتي نرجع هذه البيانات اكيد نحنا بحاجة الى اضافة View ، خلونا نضيف View جديد بالنقر يمين فوق GetStudentDetails ثم اخرAdd- View  واضف الكود التالي الى View 

@{
    Layout = null;
    ViewData["Title"] = "GetStudentDetails";
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>ReturnJson</title>
</head>
<body>
    @Model
</body>
</html>

لقد قمنا هنا في ال view بعرض Model كامل بجميع البيانات الموجودة داخله 

قم بتشغيل التطبيق ثم الانتقال الى الرابط 

https://localhost:44382/students/GetStudentDetails

ستكون النتيجة 



لاحظ ان النتيجة تعرض جميع الحقول الموجودة داخل StudentsModel على شكل Json، بعض القيم عبارة عن null وذلك لأنه لم يتم إضافة أي قيم اليها داخل action 
سنتطرق بالتأكيد الى الكثير من التفاصيل حول Json في الدروس القادمه.

Returning OK (HTTP Status Code 200) from Action

من أنواع الارجاع أيضا النوع HTTP  ، حيث يتم استخدام OK method  التي تعيد استجابة من نوع  empty HTTP Status Code 200 . 
يمكن استخدامها لإرجاع objects بتنسيق مشترك بين browser وapplication with HTTP 200 status code.
نوع الإرجاع لهذه الطريقة هو class  OkObjectResult.

مثال:

public OkObjectResult ReturnOk()
{
    return Ok(new string[] { "Hatem", "Layan", "Lareen" });
}

في View ، يمكنك ببساطة إظهار بيانات النموذج كـ @Model.
لإرجاع HTTP 200 status code  فقط بدون أي بيانات، ما عليك سوى استخدام طريقة empty() Ok .

Returning BadRequest (400), Unauthorized (401), NotFound (404) status codes from Action

يتم استخدام طريقة StatusCode الموجودة داخل Microsoft.AspNetCore.Http namespace لإرجاع أي نوع من status codes مثل BadRequest و Unauthorized و NotFound وما إلى ذلك.

نوع الإرجاع لهذه الطريقة هو class StatusCodeResult ل Microsoft.AspNetCore.Mvc namespace.
Example: Returning BadRequest – 400 Status Code

public StatusCodeResult ReturnBadRequst()
{
    return StatusCode(StatusCodes.Status400BadRequest);
}
Example: Returning Unauthorized – 401 Status Code
public StatusCodeResult ReturnUnauthorized()
{
    return StatusCode(StatusCodes.Status401Unauthorized);
}
Example: Returning NotFound – 404 Status Code
public StatusCodeResult ReturnNotFound()
{
    return StatusCode(StatusCodes.Status404NotFound);
    //or return NotFound();
}