ActionResult در ASP.NET MVC

سه شنبه 1 دی 1394

در این مقاله را جع به انواع ActionResult صحبت خواهیم کرد.ActionResult یک کلاسی است که طیف مختلفی از خروجی ها را از کنترلر به سمت کاربر برمی گرداند.

ActionResult در ASP.NET MVC

در داخل کنترلر متدهای مختلفی نوشته می شود هر متد هم توسط یک Url مجزا قابل دستیابی (فراخوانی ) است .این متدها یی که در داخل کنترلر نوشته می شوند اگر به صورت عمومی یا Public باشند و همچنین استاتیک و متد الحاقی نباشند به نام Action خوانده میشوند.این Action ها می توانند خروجی های مختلفی داشته باشند که یک نوع از مهمترین این خروجی ها  ActionResult  است .
ActionResult یک کلاسی است که طیف مختلفی از خروجی ها را از کنترلر به سمت کاربر برمی گرداند. تعریف دیگری که برای ActionResult می توان ارائه داد این است که یک نوع DataType در MVC است که به عنوان خروجی Action در MVC مورد استفاده قرار می گیرد.این DataType رده های مختلفی را در بر می گیرد.در mvc به دلیل مشکل بودن نوشتن آزمون های واحد برای response از شی ActionResult استفاده میکنیم .
همان طور که گفته شد، ActionResult انواع مختلف خروجی ها را در برمی گیرد که برخی از مهمترین آنها در زیر لیست شده است :
ViewResult .1
PartialViewResult .2
EmptyResult .3
RedirectResult .4
RedirectToRouteResult .5
JsonResult .6
JavaScriptResult .7
ContentResult .8
FileContentResult .9
FileStreamResult .10
 FilePathResult .11
 شکل زیر تقسیم بندی بالا را به خوبی نشان می دهد

ViewResult:
  HTML رابه سمت کاربر به عنوان View بر می گرداند. نمونه کدی که در کنترلر نوشته می شود و توسط آن یک View(با ساختار HTML) به سمت کاربر فرستاده می شود در زیر آورده شده است .

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


PartialViewResult:
PartialView یک صفحه HTML کامل نیست بلکه قسمتی از یک صفحه می باشد .خروجی Action از نوع PartialView  یک Stream است .در کد زیر نحوه ای که می توان با آن از یک Action خروجی از نوع PartilView گرفت آورده شده است
 

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


EmptyResult:
Action ایی که خروجی آن از نوع Empty است یک صفحه خالی به کاربر باز می گرداند.

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


RedirectResult:
همان طور که از نام آن مشخص است کاربری که از طریق آدرس وارد این Action شده است توسط کد Return Redirect به یک صفحه دیگر هدایت می شود.

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


RedirectToRouteResult:
وقتی خروجی یک Action از نوع ActionResult باشد و در قسمت Return عبارت RedirectToRouteResult نوشته شده باشد درخواست کاربر را از action جاری به action دیگری هدایت می کند .

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


JsonResult:
خروجی از نوع JsonResult یک شی از نوع json برمی گرداند.این شی می تواند توسط javaScript و یا توسط خود برنامه استفاده شود.

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:
یک محتوا برمیگرداند .دقت کنید که خروجی Html نیست بلکه متن است .

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


FileContentResult:
همان طور که از نام آن مشخص است یک فایل خاصی که نام ان در کد زیر filename است برمی گرداند.

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 به کاربر ارسال می کند .منظور از اینکه به کاربر ارسال می کند این است که در جواب درخواست کاربر یک 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); 
} 
}

 

 

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

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

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

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