ActionResult در ASP.Net MVC

یکشنبه 7 تیر 1394

در این مقاله توضیح خواهیم داد که ActionResult در MVC ، خروجی را به سمت کاربر نشان می دهد. در ASP.Net MVC به جای استفاده مستقیم از شئ Response، از شئ ActionResult جهت ارائه خروجی یک متد استفاده می شود.

ActionResult در ASP.Net MVC

ActionResult چیست ؟

ActionResult یک کلاس انتزاعی برای نمایش خروجی به سمت کاربر در فرمت های مختلف که به عنوان نتیجه View توسط کنترلر(controller) را برمی گرداند. ActionResult در داخل کنترلر تعریف می شود و کنترلر را به سمت کاربر(مرورگر) برمی گرداند.

در زیر انواع ActionResult های مهم و کاربردی ASP.Net MVC وجود دارد که براساس نیاز کاربر در خروجی استفاده می شود:

ViewResult .1

PartialViewResult .2 

EmptyResult .3

RedirectResult .4

RedirectToRouteResult .5

JsonResult .6 

JavaScriptResult .7

ContentResult .8

FileContentResult .9

FileStreamResult .10

 FilePathResult .11

در زیر فقط یک توضیح مختصری از هرکدام ActionResult گفته شده است :

 ViewResult:

view رابه سمت کاربر به عنوان HTML بر می گرداند در واقع یک View را به عنوان پاسخ بر می گرداند.

در زیر کد دستورات ActionResult در کنترل MVC را مشاهده کنید :

public class EmpController : Controller   
{          
  public ActionResult Index()     
  {         
  return View();     
  }   
}   

PartialViewResult:

PartialView پاسخ را به صورت Stream بر می گرداند. معمولا PartialView از View اصلی فراخوانی می کند که همان کنترل کاربر در asp.net می باشد.

public class EmpController : Controller  
{  
      
    public ActionResult Index()  
    {  
        return PartialView("_Empdetails");  
    }  
}  

EmptyResult:

این اکشن (action) پاسخ(response) خالی را به سمت کاربر برمی گرداند، یعنی خروجی متد از نوع void می باشد.

public class EmpController : Controller  
{  
    public ActionResult Index()  
    {  
      return new EmptyResult();  
    }  
}  

RedirectResult:

Redirect کاربر را به یک صفحه دیگر، یا با استفاده از URL به یک آدرس دیگر منتقل می کند.

در واقع تغییرمسیر به URL تعیین شده همان Response.Redirect در ASP.Net می باشد.

public class EmpController : Controller  
{    
    public ActionResult Index()  
    {  
     return Redirect("http://www.compilemode.com");  
    }  
}  

RedirectToRouteResult:

درخواست را به یک اکشن دیگر منتقل می کند. تغییرجهت HTTP به URL که توسط موتور مسیریابی بر اساس مسیرداده تعیین شده می باشد.

public class EmpController : Controller  
{  
    public ActionResult Index()  
    {  
    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new {   
    action = "View",   
    controller = "EmpController",}));  
    }  
}  

JsonResult:

یک object(شی) serialized به فرمت JSON بر می گرداند که میتواند توسط javaScript برای رندر کردن صفحه HTML و سایر داده ها مورد استفاده قرار گیرد .

public class EmpController : Controller  
{  
    public JsonResult EmpDet()    
        {        
            return Json("HI", JsonRequestBehavior.AllowGet);    
        }     
}  

JavaScriptResult:

یک قطعه کد جاوااسکریپت که میتواند در سمت کاربر اجرا شود را برمی گرداند.

public class EmpController : Controller  
{  
public virtual JavaScriptResult EmpDet()  
{  
    var script = string.Format(@"  
    MaxNotificaitonsToShow = {0};  
    ItemsPerPage = 5;",  
    GlobalSettings.MaxNotificaitonsToShow);  
    return JavaScript(script);  
}  
}  

ContentResult:

محتوا را برای پاسخ stream بدون نیاز یک view را می نویسد .

public class EmpController : Controller  
{  
public ContentResult PersonInfo()  
{  
    return Content("Hi Vithal Wadje");  
}  
}  

FileContentResult:

این اکشن یک فایل را به سمت کاربر برمی گرداند.

public class EmpController : Controller  
{  
public FileResult DailyReport()  
{  
    string fileName = @"c:\Vithal Wadje\DailyReport.pdf";  
    string contentType = "application/pdf";  
   
    return new FilePathResult(fileName, contentType);  
}  
}  

FileStreamResult:

یک فایل را به سمت کاربر بر می گرداند که توسط stream  ارائه شده است .

public class EmpController : Controller  
{    
public ActionResult DownloadFile()  
{  
    string Fileinfo =@"c:\Vithal Wadje\DailyReport.txt";  
    byte[] data = Encoding.UTF8.GetBytes(Fileinfo );  
    return File(data, "text/plain","DailyReport.txt");  
}  
}  

FilePathResult:

نتیجه فایل را به سمت کاربر بر می گرداند.

public class EmpController : Controller  
{  
public FilePathResult DownloadFile(string file, Guid GuID)  
{   
    return File(FileStream, "application/octet-stream", fileName);  
}  
}   

 

نرگس محمدی

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

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

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