ASP.NET MVC2 Web项目中公用类库的问题

ASP.NET WEB窗体 网站中,加入公用类文件的话,系统会很自动并殷勤的问你,说要不要把它存放在文件夹 App_Code 里。一旦加入,全站都可以很方便地加以使用,一点问题没有。


这种习以为常的方式,在MVC2模式下,却不存在。在MVC2(其他版本的我尚未知道)里,加入一个类文件,系统一生不吭,不会提醒你要将这么个东西放到app_code里,并且在添加ASP.NET文件的菜单命令里,只有App_Data,App_GlobalResources,App_Browsers几个,并没有所谓App_Code。




没有不要紧,我们可以自己添加这个文件夹。


但是运行的时候,问题就出来了。


比如说,我们要在控制器传递一个变量给视图,可以采用

ViewData[key]的方式。这个key,必须在控制器,视图里保持一致,否则会搞错;万一要修改,就要两个地方都改一遍。傻瓜都能想到,可以将这个key,定义在公用类里,大家都引用即可。

现在

/app_code/common.cs有代码如下

namespace mvc.App_Code
{
    public class Common
    {
        public static readonly string KeyTeacherList = "TeacherList";
    }
}

//控制器

        public ActionResult Teacher()
        {
            College.Bll.Teacher bll = new College.Bll.Teacher();
            DataTable dt  = bll.GetData();
            ViewData[common.KeyTeacherList] = dt;
            return View(dt);
        }

//视图


结果一运行就出问题了:


究其原因,应该是MVC项目编译之后,这个类存在于统一的项目dll里,然后代码这里又有源代码,因此冲突了。


解决的办法是将公用的类放在项目外,编译成独立的DLL,然后项目加以引用,问题解决。


==============================================================

这似乎是App_Code这个文件夹名字导致的问题。只要改成别的名字,就可以?


==============================================================

有关MVC中,app_code里的类无法找到,无法引用的问题,解决之道是

选中你的类文件,在属性中”高级“中的”生成操作“默认”内容“要改为编译就可以了。


参考文章:

http://www.cnblogs.com/netlover/archive/2011/04/17/AspNet_App_Code.html

系统设计之公共类库 ?Data Class Name File Function SQL访问基础类 SqlHelper.cs 执行带参数SQL,非带参数SQL,存储过程等语句 Access操作辅助类 JetAccess.cs Access的新建,压缩,加密等数据库文件操作 Oledb操作辅助类 OleDbHelper.cs 使用OleDb数据源执行SQL语句 ?Common Class Name File Function 执行命令类 CmdUtil.cs 执行各类命令;如:cmd.exe 公历/农历类 CNDate.cs 公历、农历、星座、气节等相关转换 日期格式处理类 DateUtil.cs 日期格式、闰月、计算当月天数等转换 文件实用类 FileUtil.cs 读取、备份、创建等文件操作 上传类 HtmlInputFileControl.cs 单个文件上传,控制文件格式大小 图片处理类 ImageUtil.cs 缩略图、水印等操作 授权类 Licence.cs 生成授权码,验政授权码 链接辅助类 ListBuilder.cs 动态化url,target,css等属性 分页类 PageListUtil.cs 分页使用 反射辅助类 ReflectHelper.cs 获取程序集嵌位图,文本等资源或形式 浏览器辅助类 Request.cs Get,post请求判断,url信息抓取,跨站处理等 序列化功能辅助类 SerializeHelper.cs 二进制,XmlDocument系列化及获取对象 Session封装 SessionAdapter.cs 对Session进行封装 Smtp邮件辅助类 SmtpMail.cs 配置Smtp邮件发送及HTM邮件传送 字符串实用类 StringUtil.cs 处理字符串分割,转换,嵌入等方法 类型转换类 TypeParse.cs 各种类型互相转换,如int string bool等 用户实用类 User.cs 登陆,退出时候身份加密或解除方式 验证码类 ValidateImage.cs 图片验证码 验证实用类 ValidateUtils.cs 数据类型,字符串功能,IP,日期,SQL注入等验证方法 XML处理基类 XMLHelper.cs 查看,删除,增加,修改XML数据与节点 数据出库处理类 GetSafeData.cs 处理数据库各类型出库的异常 常用类方法 GeneralHelper.cs 开发常用方法,由于多个存在,项目开发新建单独调用 ?Web Class Name File Function 网页界面功能类 WebUI.cs 控件,文本的界面处理功能 UBB代码辅助类 UBB.cs UBB代码转换 客户端代码功能类 JScript.cs 提供向页面输出客户端代码实现特殊功能的方法 客户端代码精简类 JavaScriptMinifier.cs 转换原始Js内容的精简版本 HTML格式辅助类 HtmlUtils.cs 处理HTML,脚本的特殊字符或过滤 数据压缩类 GZipHandler.cs 对传输的数据进行压缩 ?DLL Dll Name AjaxPro.dll AspNetPager.dll FreeTextBox.dll URLRewriter.dll Function Ajax控件 分页控件 在线编辑器控件 URL重写控件 本类库为转发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值