我有一个不太理想的情况,上传的文件存储在内部网络共享中。因此,在数据库中,我将路径存储到文件的保存位置,但文件很可能会被删除而不同步数据库。因此,在Controller操作中,我查找上传信息并执行检查,确保事情是正确的。它可以概括为如下所示:如何为ASP.NET MVC控制器处理不同的ActionResults动作
public ActionResult GetUploadedFile(int uploadId){
var uploadedFile = Repository<Upload>.FirstOrDefault(upload => upload.ID == uploadID);
if(uploadedFile == default(Upload)){
return View("InvalidUpload");
}
if(File.Exists(uploadFile.Path)){
var fileInfo = new FileInfo(uploadFile.Path);
var contentType = HttpContext.GetMimeTypeForFileInfo(fileInfo) // my lookup extension method
return File(uploadFile.Path, contentType, uploadFile.Name);
}
return View("InvalidUpload");
}
问题是,此操作当前可通过通过AJAX加载的视图上的链接访问。因此,当文件存在并且一切正常时,它会在浏览器中显示标准的“你想用这个文件做什么”对话框,并保持内容对用户可见。问题是通过代码的其他路径。返回视图会将用户转到一个全新的URL。然后点击返回会重置它们的位置(它基本上是动态的jQuery Tabs,所以没什么大的,但仍然是一个重大的不便)。
所以我正在寻找其他人可能如何解决这种情况,因为它似乎并不少见。甚至还有一些反馈意见让用户更友好一些。我在文件存储位置没有发言权,所以更改这不是一个选项。
你想用户返回到正确的JQuery的标签? – 2009-12-15 16:40:06
其实我宁愿没有离开当前位置的移动,但将它们带回正确的标签也是有益的。请记住,他们最可能使用的标签是完整的网址,而不是编号。所以jQuery Tabs给它一个独特的散列。 – 2009-12-15 16:50:53