Tôi cần tạo một ActionResult trong một ứng dụng ASP.NET MVC có một tệp .csv.Cách được khuyến nghị để tạo một ActionResult với phần mở rộng tập tin
Tôi sẽ cung cấp danh sách email 'không gọi' cho các đối tác tiếp thị của mình và tôi muốn nó có đuôi .csv trong loại tệp. Sau đó, nó sẽ tự động mở trong Excel.
http://www.example.com/mailinglist/donotemaillist.csv?password=12334
Tôi đã thực hiện thành công việc này như sau, nhưng tôi muốn đảm bảo đây là cách tốt nhất và được khuyến nghị tuyệt đối để thực hiện việc này.
[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"
};
}
Hành động này sẽ phản hồi lại liên kết trên.
Tôi chỉ băn khoăn liệu có bất kỳ xung đột không mong muốn nào về việc mở rộng tệp như thế này với bất kỳ phiên bản IIS nào khác, bất kỳ loại bộ lọc ISAPI nào hay không.
Tôi cần chắc chắn 100% vì tôi sẽ cung cấp điều này cho các đối tác bên ngoài và không muốn thay đổi ý định sau này. Tôi thực sự không thể nhìn thấy bất kỳ vấn đề, nhưng có lẽ theres một cái gì đó tối nghĩa - hoặc một "MVC" nhiều hơn như cách làm điều này.
cảm ơn! nhưng bạn có thể làm rõ những gì bạn có nghĩa là phải không? những gì tôi đã làm dường như làm việc - mặc dù cách này là thích hợp hơn nhiều –
Nếu hành động của bạn trả về ".csv" tập tin sau đó khách hàng của bạn muốn "mở" hoặc "lưu" nó - vì vậy bạn phải cung cấp tiêu đề "Content-Disposition" (mặc dù nó là tùy chọn, xem http://www.ietf.org/rfc/rfc2183.txt). Không có tiêu đề này, quá trình mở tệp của bạn có thể khác nhau ở các trình duyệt/hệ điều hành/máy khác nhau –
Có lỗi trong mã không? Tên không nên là một chuỗi thay vì mã hóa? Ngoài ra trình biên dịch nói với tôi rằng ActionResult không có thuộc tính Response – ADB