У меня есть действие контроллера, которое загружает динамически сгенерированный файл:
public ActionResult DownloadFile()
{
var obj = new MyClass { MyString = "Hello", MyBool = true };
var ser = new XmlSerializer(typeof(MyClass));
var stream = new MemoryStream();
ser.Serialize(stream, obj);
stream.Position = 0;
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=myfile.xml");
Response.ContentType = "application/xml";
// Write all my data
stream.WriteTo(Response.OutputStream);
Response.End();
return Content("Downloaded");
}
Только для справки:
public class MyClass
{
public string MyString { get; set; }
public int MyInt { get; set; }
}
Это работает, и файл (myfile.xml) загружен.
Однако сообщение "Скачано" не отправляется в браузер.
Аналогично, если я заменил return Content("Downloaded");
для return Redirect("www.something.com");
затем браузер перенаправляется до загрузки файла.
Как немного пре-амблема, пользовательское путешествие:
- Пользователь заполняет форму в предыдущем представлении
- Форма отправлена
- XML создается и загружается
- Пользователь перенаправляется/отображается "Загруженный" вид (так что F5 не будет повторно размещать форму)