Вы можете использовать заголовок Content-Disposition и указать свойство attachment
, которое предложит пользователю диалоговое окно Сохранить как:
public ActionResult Download()
{
var cd = new ContentDisposition
{
FileName = "foo.xml",
Inline = false
};
Response.AppendHeader("Content-Disposition", cd.ToString());
var xml = Encoding.Default.GetBytes("<root>some content</root>");
return File(xml, "text/xml");
}