2011-12-06 24 views
0

我有一个代码在我们的Web应用程序的一个新窗口中做了一个简单的表单发布,该窗口发布到ASP.NET MVC3控制器上的一个Action上。此行为在PC浏览器上工作得很好,但如果用户在Mac上,表单发布会导致浏览器下载一个零字节文件,其中包含所请求的操作的名称。在Mac浏览器上通过ASP.NET MVC进行表单发布

该操作查找数据库中的一个项目,并根据其格式返回具有正确内容类型和项目数据的FileContentResult。

任何人都可以告诉我为什么会发生这种情况,以及他们在遇到这种情况时找到的解决方法吗?

if (item.Format == PrintedItemFormat.PDF || item.Format == PrintedItemFormat.XDP) 
{ 
    return new FileContentResult(Encoding.UTF8.GetBytes(item.Data), "application/vnd.adobe.xdp+xml"); 
} 

if (item.Format == PrintedItemFormat.XFDL) 
{ 
    return new FileContentResult(Encoding.ASCII.GetBytes(item.Data), "application/vnd.xfdl"); 
} 

if (item.Format == PrintedItemFormat.CSV) 
{ 
    return new FileContentResult(Encoding.UTF8.GetBytes(item.Data), "application/CSV") 
    { 
     FileDownloadName = item.FileName 
    }; 
} 

if (item.Format == PrintedItemFormat.HTML) 
{ 
    return new FileContentResult(Encoding.UTF8.GetBytes(item.Data), "text/html"); 
} 

if (item.Format == PrintedItemFormat.TXT) 
{ 
    return new FileContentResult(Encoding.UTF8.GetBytes(item.Data), "text/plain"); 
} 

if (item.Format == PrintedItemFormat.XFDF) 
{ 
    return new FileContentResult(Encoding.UTF8.GetBytes(item.Data), "application/vnd.adobe.xfdf"); 
} 
+1

请输入密码?否则,我们只是在盲目折叠的问题上掷飞镖。 – tvanfosson

+0

你想看什么代码?那个行动? – strickland

+0

很高兴看到你如何在客户端打开它。它很可能不会采取行动。您是否使用过任何浏览器开发工具来查看请求是否真的在制作? – tvanfosson

回答

0

我认为问题是Mac浏览器需要知道FileDownloadName,因为它无法通过请求推断。