У меня есть код, который отправляет простую форму в новом окне из нашего веб-приложения, которое вызывает действие на контроллере ASP.NET MVC3. Это поведение прекрасно работает в браузерах ПК, но если пользователь находится на Mac, публикация формы заставляет браузер загрузить нулевой байтовый файл с именем запрашиваемого действия.
Действие ищет элемент из базы данных и на основе его формата возвращает 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");
}