Скачать вместо отображения (рендеринга) сгенерированный XML

В контроллере в моем приложении ASP.Net MVC я сериализую класс и пытаюсь предложить содержимое для немедленной загрузки.

Пока что мой контроллер возвращает FileStreamResult

    public FileStreamResult Create(MyViewMode vm)
    {
        var xml= _mySerializer.SerializeToXml(vm);

        var ms = new MemoryStream(Encoding.UTF8.GetBytes(xml));
        return new FileStreamResult(ms, "application/xml");
    }

Это работает, однако выводит XML в браузере.

Есть ли способ, чтобы я мог загрузить файл, например, MyXml.xml?

2 ответа

Решение

Кажется, это делает то, что вы хотите:

public class HomeController : Controller
{
    public ActionResult MyXml()
    {
        var obj = new MyClass {MyString = "Hello", MyInt = 42, MyBool = true};
        var ser = new XmlSerializer(typeof(MyClass));
        var stream = new MemoryStream();
        ser.Serialize(stream, obj);
        stream.Position = 0;
        return File(stream, "application/xml", "MyXml.xml");
    }

    public class MyClass
    {
        public string MyString { get; set; }
        public int MyInt { get; set; }
        public bool MyBool { get; set; }
    }
}

Можете ли вы использовать XmlDocument() и записать в него XML, а затем использовать свойство Save?

Другие вопросы по тегам