C# - 我无法引用HttpPostedFileBase

时间:2009-12-15 23:15:17

标签: c# model-view-controller file upload httppostedfile

我在CSLA的分布式环境中使用MVC .NET,我可以从我的某个Web层(例如Website.MVC)引用HttpPostedFileBase,但我不能从单独的层引用HttpPostedFileBase(让我们称之为OtherLayer.Web)。

知道我需要做什么才能调用HttpPostedFileBase? 我可以在两个层中使用HttpPostedFile - 我应该只使用它吗?

程序集引用基本相同 - 在Website.MVC中我有:

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;

而在我的另一层,我有:

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;

2 个答案:

答案 0 :(得分:28)

确保您的项目引用包含HttpPostedFileBase类型的System.Web.Abstractions程序集。

尽管看起来令人困惑,但HttpPostedFile类型存在于一个单独的程序集(System.Web)中,但却是完全相同的命名空间。

重要的是要记住,名称空间可以跨越程序集,程序集的名称不一定决定其中包含的类型的名称空间。没有System.Web.Abstractions 名称空间只是两个包含System.Web名称空间中类型的程序集。

一旦引用了两个程序集,就可以使用这个单一的using语句通过非限定名称引用这两个类型:

using System.Web;

答案 1 :(得分:0)

  

确保您的项目引用包含HttpPostedFileBase类型的System.Web.Abstractions程序集。

谢谢,Andrew Hare,这样做了,但我相信来自.Net 4.0等等,不推荐使用System.Web.Abstractions,你应该添加对System.web的引用。

就我而言,那是最终的解决方案,之后

using System.Web;

工作,因此,HttpPostedFileBase得到了认可。

感谢。