ساخت ActionResult سفارشی
نویسنده: محمد صاحب
تاریخ: ۱۳۹۱/۱۱/۲۱ ۱۷:۵۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public class TextResult : ActionResult
{
public string FileName { get; set; }
public override void ExecuteResult(ControllerContext context)
{
var filePath = Path.Combine(context.HttpContext.Server.MapPath(@"~/Files/"), FileName);
var data = File.ReadAllText(filePath);
context.HttpContext.Response.Write(data);
}
} public ActionResult DownloadTextFile(string fileName)
{
return new TextResult { FileName = fileName };
} public ActionResult DownloadTextFile(string fileName)
{
var filePath = Path.Combine(HttpContext.Server.MapPath(@"~/Files/"), fileName);
return File(filePath, "text");
}public class CsvActionResult : ActionResult
{
public IEnumerable ModelListing { get; set; }
public CsvActionResult(IEnumerable modelListing)
{
ModelListing = modelListing;
}
public override void ExecuteResult(ControllerContext context)
{
byte[] data = new CsvFileCreator().AsBytes(ModelListing);
var fileResult = new FileContentResult(data, "text/csv")
{
FileDownloadName = "CsvFile.csv"
};
fileResult.ExecuteResult(context);
}
} public ActionResult ExportUsers()
{
IEnumerable<User> model = UserRepository.GetUsers();
return new CsvActionResult(model);
}public class LogoutActionResult : ActionResult
{
public RedirectToRouteResult ActionAfterLogout { get; set; }
public LogoutActionResult(RedirectToRouteResult actionAfterLogout)
{
ActionAfterLogout = actionAfterLogout;
}
public override void ExecuteResult(ControllerContext context)
{
FormsAuthentication.SignOut();
ActionAfterLogout.ExecuteResult(context);
}
} public ActionResult Logout()
{
var redirect = RedirectToAction("Index", "Home");
return new LogoutActionResult(redirect);
} [TestMethod]
public void The_Logout_Action_Returns_LogoutActionResult()
{
//arrange
var account = new AccountController();
//act
var result = account.Logout() as LogoutActionResult;
//assert
Assert.AreEqual(result.ActionAfterLogout.RouteValues["Controller"], "Home");
}context.HttpContext.Response
PM> Install-package Microsoft.AspNet.Mvc
Response.Body.Write
System.InvalidOperationException: Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead.