Necesito crear un ActionResult en una aplicación ASP.NET MVC que tenga un tipo de archivo .csv.Forma recomendada de crear un ActionResult con una extensión de archivo
Voy a proporcionar una lista de correo electrónico 'no llamar' a mis socios de marketing y quiero que tenga una extensión .csv en el tipo de archivo. Luego se abrirá automáticamente en Excel.
http://www.example.com/mailinglist/donotemaillist.csv?password=12334
he hecho esto con éxito de la siguiente manera, pero yo quiero para asegurarse de que esta es la manera más favorable y recomendada de hacer esto.
[ActionName("DoNotEmailList.csv")]
public ContentResult DoNotEmailList(string username, string password)
{
return new ContentResult()
{
Content = Emails.Aggregate((a,b)=>a+Environment.NewLine + b),
ContentType = "text/csv"
};
}
Este Actionmethod responderá muy bien al enlace de arriba.
Me pregunto si hay alguna posibilidad de que surja un conflicto inesperado al tener una extensión de archivo como esta con cualquier versión diferente de IIS, cualquier tipo de filtro ISAPI o cualquier otra cosa en la que no pueda pensar ahora.
Necesito estar 100% seguro porque proporcionaré esto a socios externos y no quiero tener que cambiar de opinión más adelante. Realmente no puedo ver ningún problema, pero tal vez hay algo oscuro, u otra forma más de "MVC" de hacer esto.
gracias! pero ¿puedes aclarar lo que quieres decir con DEBE? lo que tenía no parecen funcionar - aunque esta forma es mucho más preferible –
Si sus declaraciones de acción ".csv" archivo a continuación, sus clientes quieren 'abrir' o 'salvar' - por lo que debe proporcionar 'Content-Disposition' de cabecera (aunque es opcional, vea http://www.ietf.org/rfc/rfc2183.txt). Sin este encabezado, el proceso de apertura de su archivo puede diferir en varios navegadores/sistemas operativos/máquinas –
¿Hay algún error en el código? ¿No debería el nombre ser una cadena en lugar de una codificación? Además, el compilador me dice que ActionResult no tiene una propiedad de respuesta – ADB