2010-05-25 5 views
5

Trong ASP.NET MVC tôi có một bảng cơ sở dữ liệu. Tôi muốn có một nút trên một số trang xem, nếu một số người dùng nhấp vào nút đó, ứng dụng của tôi sẽ tạo ra tệp XML chứa tất cả các hàng trong cơ sở dữ liệu. Sau đó, tệp chứa XML phải được gửi tới máy khách để người dùng sẽ thấy cửa sổ bật lên tải xuống.Cách gửi tệp XML tới máy khách trong ASP.NET MVC

Tương tự, tôi muốn cho phép người dùng tải lên tệp XML có nội dung sẽ được thêm vào cơ sở dữ liệu.

Cách đơn giản nhất để cho phép người dùng tải lên và tải xuống tệp là gì?

Cảm ơn tất cả các câu trả lời

EDIT: Đây là cách tiếp cận của tôi:

public FileContentResult Download() { 
     if(model.Series.Count() < 1) { 
      byte[] content = new byte[0]; 
      return new FileContentResult(content, "Series"); 
     } 
     XmlSerializer serializer = new XmlSerializer(model.Series.FirstOrDefault().GetType()); 

     MemoryStream xmlStream = new MemoryStream(); 
     foreach (Series s in model.Series) { 
      serializer.Serialize(xmlStream, s); 
     } 

     byte[] content2 = new byte[xmlStream.Length]; 
     xmlStream.Position = 0; 
     xmlStream.Read(content2, 0, (int) xmlStream.Length); 

     return File(content2, "Series"); 
} 

đâu mô hình là DataContext. Howewer này không hoạt động. Khi tôi cố gắng để tải về các dữ liệu tôi nhận được lỗi này:

XML Parsing Error: junk after document element 
Location: http://localhost:1399/Xml/Download 
Line Number 7, Column 10:</Series><?xml version="1.0"?> 
---------^ 

Trả lời

3

cho phần tải về, bạn có thể sử dụng FileStreamResult

This page có các ví dụ để tải lên và tải về; kiểm tra xem nó ra.

1

Tài liệu XML chỉ có thể có một phần tử cấp cao nhất. Sau khi kết thúc phần tử, bạn không thể có bất cứ thứ gì khác. Có vẻ như sau phần tử "</Series>" bạn có "< ?xml version="1.0>", không hợp lệ.