我有一个试图下载文件的控制器,如果文件失败我想向视图发送一个字符串来显示错误。我试图用TempData来完成这个,我遇到了一些麻烦。错误显示文件无法下载,但文件成功下载后,错误消息不会消失。我可能做错了什么?
控制器
if (can_download)
{
Response.ContentType = contentType;
Response.AppendHeader("Content-Disposition", string.Format("attachment; filename={0}", filename));
Response.TransmitFile(path);
Response.End();
}
else
{
TempData["AlertMessage"] = "File failed to save";
}
return RedirectToAction("Index", page);
查看
@{
var message = TempData["AlertMessage"];
}
<p class="error-msg">@message</p>
@section scripts {
var message = '@message';
if (message){
$('.error-msg').css('opacity', 100); // show message
}else{
$('.error-msg').css('opacity', 0); // hide message
}
}
答案 0 :(得分:1)
如果文件生成成功,则必须清除TempData。
在上一个错误中,没有消耗TempData。
if (can_download)
{
Response.ContentType = contentType;
Response.AppendHeader("Content-Disposition", string.Format("attachment; filename={0}", filename));
Response.TransmitFile(path);
Response.End();
TempData["AlertMessage"] = string.Empty;
}
else
{
TempData["AlertMessage"] = "File failed to save";
}
return RedirectToAction("Index", page);
查看
@{
var message = TempData["AlertMessage"] as string;
}
@if (!string.IsNullOrEmpty(message)) {
<p class="error-msg">@message</p>
@section scripts {
var message = '@message';
if (message){
$('.error-msg').css('opacity', 100); // show message
}else{
$('.error-msg').css('opacity', 0); // hide message
}
}
}