2009-12-15 37 views
10

Tôi đang sử dụng MVC NET trong một môi trường phân phối với csvn và tôi thể tham khảo HttpPostedFileBase từ một trong những lớp web của tôi (ví dụ Website.MVC), nhưng tôi không thể tham khảo HttpPostedFileBase từ lớp riêng biệt (cho phép gọi nó là OtherLayer.Web).C# - Tôi không thể tham khảo HttpPostedFileBase

Bất kỳ ý tưởng nào về những gì tôi cần làm để có thể gọi HttpPostedFileBase? Tôi có thể sử dụng HttpPostedFile trong cả hai lớp - tôi có nên sử dụng thay thế này không?

Các tài liệu tham khảo lắp ráp cơ bản giống nhau - trong Website.MVC tôi có:

namespace Website.Mvc.Controllers 
{ 
    using System; 
    using System.Collections; 
    using System.Collections.Generic; 
    using System.Web.Mvc; 
    using System.Web; 
    using System.IO; 
    using PetOrganizer.Mvc.Helpers; 
    using TrupanionPetInsurance.Web; 

Trong khi đó ở lớp khác của tôi có:

namespace OtherLayer.Web 
{ 
    using System; 
    using System.Collections; 
    using System.Collections.Generic; 
    using System.Collections.Specialized; 
    using System.Data; 
    using System.Data.SqlClient; 
    using System.IO; 
    using System.Net.Mail; 
    using System.Text; 
    using System.Text.RegularExpressions; 
    using System.Web; 
    using System.Web.Mvc; 
    using System.Web.Security; 
    using System.Xml; 
    using System.Xml.Serialization; 
    using Csla; 
    using iTextSharp.text; 
    using iTextSharp.text.pdf; 
    using TruDat.BusinessLayer; 
    using TruDat.BusinessLayer.Billing; 
    using TruDat.BusinessLayer.Data; 
    using TruDat.BusinessLayer.Utility; 
    using TrupanionPetInsurance.Web.EmailTemplateParser; 
    using TruDat.BusinessLayer.DataServices; 

Trả lời

26

Hãy chắc chắn rằng dự án của bạn tham chiếu assembly System.Web.Abstractions mà chứa loại HttpPostedFileBase.

Có vẻ như khó hiểu, kiểu HttpPostedFile sống trong một hội đồng riêng biệt (System.Web) nhưng có cùng một không gian tên chính xác. Điều quan trọng là phải nhớ rằng các không gian tên có thể mở rộng các cụm và tên của một assembly không nhất thiết đặt ra không gian tên của các kiểu chứa trong nó. Không có không gian tên System.Web.Abstractions chỉ đơn giản là hai cụm chứa các loại trong không gian tên System.Web.

Một khi bạn đã tham khảo cả hội bạn có thể tham khảo cả hai loại bằng tên không đủ tiêu chuẩn của họ với tuyên bố sử dụng đơn này:

using System.Web; 
+0

Đối với một số lý do tôi không thể tham khảo System.Web.Abstractions - Tôi nhận được lỗi: Lỗi Loại hoặc namespace tên 'Abstractions' không tồn tại trong không gian tên 'System.Web' (là bạn thiếu một tham khảo lắp ráp?) – Teddy

+0

Hi Teddy, câu trả lời của tôi cho nhận xét của bạn quá dài nên tôi đã cập nhật bài đăng của mình ở trên thay thế :) –

+0

Ok, đồng nghiệp của tôi đã tìm ra điều này - tôi chỉ cần thêm tham chiếu vào System.Web.Abstractions trong OtherLayer.Web. Tôi có thể tham khảo HttpPostedFileBase ngay bây giờ. Cảm ơn đã giúp đỡ! – Teddy

0

Make sure your project references the System.Web.Abstractions assembly which contains the HttpPostedFileBase type.

Cảm ơn, Andrew Hare, mà đã làm các trick, nhưng tôi tin rằng từ .Net 4.0 và như vậy, System.Web.Abstractions không được chấp nhận và bạn nên thêm tham chiếu đến System.web.

Trong trường hợp của tôi, đó là giải pháp cuối cùng, sau đó

using System.Web; 

làm việc, và do đó, HttpPostedFileBase đã được công nhận.

Cảm ơn.

Các vấn đề liên quan