0
這種情況就像我有一個索引操作方法,它正在下載一個文件,下載完成後我需要從我的應用程序中刪除該文件。
要刪除文件,我已創建了包含在模型中的操作篩選器OnActionExecuted
。現在問題是我不知道如何訪問此操作篩選器中的文件名?
這是操作方法:如何將Action Method中的值傳遞給Model中不包含的Action Filter?
[HttpPost]
[DeleteFile]
public virtual ActionResult Index(TranscriptViewModel model)
{
string exportedFileName = model.GetFileName();
if (!string.IsNullOrWhiteSpace(exportedFileName))
{
var fileStream = System.IO.File.OpenRead(Server.MapPath(@"App_Data\" + exportedFileName));
return File(fileStream, "application/" + model.Format.ToLower(), model.FileName);
}
else
{
model.IsShowErrorMsg = true;
return View(model);
}
}
exportedFileName
是,我需要在下面的動作過濾器來訪問文件名:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class DeleteFileAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
string fileName = "I need file name here";
if (System.IO.File.Exists(fileName))
{
filterContext.HttpContext.Response.Flush();
filterContext.HttpContext.Response.End();
System.IO.File.Delete(fileName);
}
}
}
請建議我我如何才能實現這一要求的方式。謝謝。
您可以顯示文件名是如何建造?我的意思是這個方法:model.GetFileName(); –