asp.net MVC2 初探十四

简介:
今天我就给大家讲讲我在项目中遇到的一个问题(即泛型类的注入)。首先看看代码,郁闷得很,搞了一早上。
InBlock.gif using System; 
InBlock.gif using System.Collections.Generic; 
InBlock.gif using System.Linq; 
InBlock.gif using System.Text; 
InBlock.gif using System.Web.Mvc; 
InBlock.gif using Spring.Context; 
InBlock.gif using Spring.Context.Support; 
InBlock.gif 
InBlock.gif namespace Dao 
InBlock.gif
InBlock.gif         public  class Common<T> 
InBlock.gif        { 
InBlock.gif                 public  delegate List<T> ItemList( string hql); 
InBlock.gif 
InBlock.gif                 /// <summary> 
InBlock.gif                 ///    获取下拉列表的项 
InBlock.gif                 /// </summary> 
InBlock.gif                 /// <param name="hql">传递的hql语句</param> 
InBlock.gif                 /// <param name="dataValueField">下拉列表Value值</param> 
InBlock.gif                 /// <param name="dataTextField">下拉列表文本值</param> 
InBlock.gif                 /// <param name="optionLabel">下拉列表默认值</param> 
InBlock.gif                 /// <param name="GetItemlist">委托返回list泛型</param> 
InBlock.gif                 /// <returns>下拉列表项</returns> 
InBlock.gif                 public SelectList GetListItem( string hql,  string dataValueField,  string dataTextField,  string optionLabel, ItemList GetItemlist) 
InBlock.gif                { 
InBlock.gif                        IEnumerable<T> iEnumerable = GetItemlist(hql).AsEnumerable(); 
InBlock.gif                        SelectList selectList =  new SelectList(iEnumerable, dataValueField, dataTextField, optionLabel); 
InBlock.gif                         return selectList; 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 根据Id获取spring容器加载的对象 
InBlock.gif                 /// </summary> 
InBlock.gif                 /// <param name="objId">对象映射Id</param> 
InBlock.gif                 /// <returns></returns> 
InBlock.gif                 public  object GetClass( string objId) 
InBlock.gif                { 
InBlock.gif                        IApplicationContext context = ContextRegistry.GetContext(); 
InBlock.gif                         return context.GetObject(objId); 
InBlock.gif                } 
InBlock.gif        } 
InBlock.gif
这个是我写的公共类Common.cs。再看看我的Controller调用
InBlock.gif public  class CodeController : BaseController<SS_CODE> 
InBlock.gif        { 
InBlock.gif                 private SS_CODE ssCode { set; get; } 
InBlock.gif                 private Common<SS_CODE> common { set; get; } 
InBlock.gif                 public ActionResult Index() 
InBlock.gif                { 
InBlock.gif                         try 
InBlock.gif                        { 
InBlock.gif                                 // Common<SS_CODE> common = new Common<SS_CODE>(); 
InBlock.gif                                SS_CodeDao sc = common.GetClass( "CodeDao"as SS_CodeDao; 
InBlock.gif                                SelectList list = common.GetListItem( " from SS_CODE""C_DATA""C_ENAME""---选择---", sc.Select); 
InBlock.gif                                ViewData.Add( "items", list); 
InBlock.gif                                 return View( "~/Views/System/User/UserManager.aspx"); 
InBlock.gif                        } 
InBlock.gif                         catch (Exception e) 
InBlock.gif                        { 
InBlock.gif                                ILog lg = log4net.LogManager.GetLogger( "WebLogger"); 
InBlock.gif                                { 
InBlock.gif                                         if (lg.IsErrorEnabled) 
InBlock.gif                                        { 
InBlock.gif                                                lg.Error( this.GetType().ToString() + e.Message); 
InBlock.gif                                        } 
InBlock.gif                                } 
InBlock.gif                                 return View(); 
InBlock.gif                        } 
InBlock.gif                } 
InBlock.gif}
我们再看看xml
<? xml  version ="1.0"  encoding ="utf-8" ?> 
< objects  xmlns ="http://www.springframework.net" 
                  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" 
                  xsi:schemaLocation ="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd" > 
     < object  id ="ssCode"  type ="Model.SS_CODE,Model" > 
         < property  name ="C_DATA"  value ="2" > </ property > 
     </ object > 
     < object  id ="CodeController"  type ="Controllers.CodeController,NormalUniversity"  singleton ="false"     autowire ="byName"  > 
         < property     name ="ssCode"  ref ="ssCode" > </ property > 
         < property  name ="common"  ref ="common" > </ property > 
     </ object > 
     < object  id ="common" type="Dao.Common &lt;Model.SS_CODE >,Dao"> 
     </ object > 
</ objects >
这里我将common泛型类注入到controller。注意xml文件的最后一个object,本来泛型要写成Dao.Common<Model.SS_CODE>但是xml会把第一个<翻译成小于号。因此这里需要用&lt;代替。
最后我很郁闷的是这样一种写法报错,我始终没搞明白。大家帮我看看。如下
InBlock.gif using System; 
InBlock.gif using System.Collections.Generic; 
InBlock.gif using System.Linq; 
InBlock.gif using System.Text; 
InBlock.gif using System.Web.Mvc; 
InBlock.gif using Spring.Context; 
InBlock.gif using Spring.Context.Support; 
InBlock.gif 
InBlock.gif namespace Dao 
InBlock.gif
InBlock.gif         public  class Common 
InBlock.gif        { 
InBlock.gif                 public  delegate List<dynamic> ItemList( string hql); 
InBlock.gif 
InBlock.gif                 /// <summary> 
InBlock.gif                 ///    获取下拉列表的项 
InBlock.gif                 /// </summary> 
InBlock.gif                 /// <param name="hql">传递的hql语句</param> 
InBlock.gif                 /// <param name="dataValueField">下拉列表Value值</param> 
InBlock.gif                 /// <param name="dataTextField">下拉列表文本值</param> 
InBlock.gif                 /// <param name="optionLabel">下拉列表默认值</param> 
InBlock.gif                 /// <param name="GetItemlist">委托返回list泛型</param> 
InBlock.gif                 /// <returns>下拉列表项</returns> 
InBlock.gif                 public SelectList GetListItem( string hql,  string dataValueField,  string dataTextField,  string optionLabel, ItemList GetItemlist) 
InBlock.gif                { 
InBlock.gif                        IEnumerable<dynamic> iEnumerable = GetItemlist(hql).AsEnumerable(); 
InBlock.gif                        SelectList selectList =  new SelectList(iEnumerable, dataValueField, dataTextField, optionLabel); 
InBlock.gif                         return selectList; 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 根据Id获取spring容器加载的对象 
InBlock.gif                 /// </summary> 
InBlock.gif                 /// <param name="objId">对象映射Id</param> 
InBlock.gif                 /// <returns></returns> 
InBlock.gif                 public  object GetClass( string objId) 
InBlock.gif                { 
InBlock.gif                        IApplicationContext context = ContextRegistry.GetContext(); 
InBlock.gif                         return context.GetObject(objId); 
InBlock.gif                } 
InBlock.gif        } 
InBlock.gif
InBlock.gif SS_CodeDao sc = common.GetClass( "CodeDao"as SS_CodeDao; 
InBlock.gif                                SelectList list = common.GetListItem( " from SS_CODE""C_DATA""C_ENAME""---选择---", sc.Select);

xml也配置无误。再调用的话就会报错,sc.select报错返回类型不正确。



本文转自 BruceAndLee 51CTO博客,原文链接:http://blog.51cto.com/leelei/328874,如需转载请自行联系原作者


相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
相关文章
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0
|
30天前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
28 0
|
30天前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
95 5
|
3月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
25 0
|
3月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
123 0
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
51 0
|
8月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
106 0
|
8月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(六)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情,购物车等功能的开发,今天继续讲解订单管理功能开发,仅供学习分享使用,如有不足之处,还请指正。
214 0