关于MVC2.0 问题!

jasonM2008 2011-02-23 03:29:47
我想在首页上面放置很多栏目。每个栏目,我都做成了Usercontrol. 每个Usercontrol 都对应一个model .但是,我要把这些栏目的都放置在一个页面(首页)上,我这些数据,就要在显示首页的时候一次性全部取出。所以,我又手动添加了一个首页的model. 这个model.里面包含了各个UserControl 对应的Model. 我的想法是这样的。在首页Model里面包含各个Usercontrol所需要的数据,然后各个Usercontrol 再从这个首页model里面取出所需要的model数据。但是事实这样做。在首页插入Usercontrol的地方会报模型类型错误。
部分代码如下:
//首页模型
public class IndexModels
{
//关于我们
public AboutUsModels aboutus = new AboutUsModels();

//公司信息
public CompanyIntroModels companyInfo = new CompanyIntroModels();

//产品展示
public List<ProductShowModels> productShow = new List<ProductShowModels>();

//站内搜索
public SearchModels search = new SearchModels();

//产品分类
public List<ProductClassModels> productclass = new List<ProductClassModels>();

//主营业务
public List<MainBusinessModels> mainbusiness = new List<MainBusinessModels>();

//联系我们
public ContactUsModels contactus = new ContactUsModels();

//新产品展示
public List<NewProductModels> newproduct = new List<NewProductModels>();
}

//控制器部分代码
public ActionResult Index()
{
ViewData["Message"] = "欢迎来到昆明奇妙锁业公司";

IndexModels indexmodel = new IndexModels();
GetIndexInfo(indexmodel);

return View(indexmodel);
}

//获取主页显示所需要的所有信息
private void GetIndexInfo(IndexModels indexmodel)
{
GetAboutUsInfo(indexmodel);
GetCompanyIntroInfo(indexmodel);
GetProductShowInfo(indexmodel);
GetProductClassInfo(indexmodel);
GetMainBusinessInfo(indexmodel);
GetContactUsInfo(indexmodel);
GetNewProductInfo(indexmodel);
}

报错:
细信息: System.InvalidOperationException: 传入字典的模型项的类型为“LockCompany.Models.IndexModels”,但此字典需要类型“System.Collections.Generic.IEnumerable`1[LockCompany.Models.NewProductModels]”的模型项。


请熟悉MVC2.0的大哥指点小弟,小弟是新新手,说详细点,这种需要复用的模块该如何来做。我的做法是否有问题。谢谢!
...全文
400 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jasonM2008 2011-02-23
  • 打赏
  • 举报
回复
搞定,3Q各位,结贴!
phil999 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jasonm2008 的回复:]

引用 1 楼 phil999 的回复:
首页里是不是用的 html.renderPartial?,把 IndexModels.newproduct 传给你的 user control

对,就是对调用的这个。
IndexModels 名字就是这个?
我是打算这样做,但是,怎么没有智能提示?
[/Quote]

html.renderpartial(Model.newproduct)
jasonM2008 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 claymore1114 的回复:]
你可以把 每个的Model放到ViewData中,再取出来
<%Html.RenderPartial("Nav",ViewData[''] as Model1); %>
[/Quote]

这个MS是个好方法,这个是强类型的吗?
jasonM2008 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 phil999 的回复:]
首页里是不是用的 html.renderPartial?,把 IndexModels.newproduct 传给你的 user control
[/Quote]
对,就是对调用的这个。
IndexModels 名字就是这个?
我是打算这样做,但是,怎么没有智能提示?

claymore1114 2011-02-23
  • 打赏
  • 举报
回复
你可以把 每个的Model放到ViewData中,再取出来
<%Html.RenderPartial("Nav",ViewData[''] as Model1); %>
claymore1114 2011-02-23
  • 打赏
  • 举报
回复
你可以把 每个的Model放到ViewData中,再取出来
<%Html.RenderPartial("Nav",ViewData[''] as Model1); %>
phil999 2011-02-23
  • 打赏
  • 举报
回复
首页里是不是用的 html.renderPartial?,把 IndexModels.newproduct 传给你的 user control
MVC2.0入门必读教程程序源码 前言 ASP.NET MVC作为微软官方的MVC解决方案,推出有一段时间了。可以说自动推出以来,一直广受关注。在经历了漫长的Preview之后,前几天终于推出了其beta版。并且在官方文档中,微软声明最终的正式版与beta版相比不会有大的变化。所以,对于.NET平台的开发人员来说,是时候学习ASP.NET MVC了。 本系列文章作为一个ASP.NET MVC的入门教程,将不会长篇大论介绍其中的概念及理论。而是通过案例实践来学习ASP.NET MVC。在这系列文章中我将逐步完成一个“公告发布系统”。我的写作策略是:先动手做,遇到需要解释概念和理论的时候再解释,而不是先把概念和理论解释完再做东西。 另外,我还有几点要说明的: 1.为了将大家的关注点充分集中在ASP.NET MVC上,这个Demo的业务处理将使用Mock的方式。即不会真正去访问数据库,而是虚拟一些数据。 2.本Demo将不考虑任何美工问题。 下面,让我们一起开始ASP.NET MVC之旅吧。 配置环境 如果您还没有安装ASP.NET MVC的话,请到这里(http://www.microsoft.com/downloads/details.aspx?FamilyId=A24D1E00-CD35-4F66-BAA0-2362BDDE0766&displaylang=en)下载安装。 下载后,按提示安装就可以了。 新建项目 安装完ASP.NET MVC后,在VS里新建一个项目,可以看到有一个“ASP.NET MVC Web Application”的选项,选择它,新建一个项目,并命名为“MVCDemo”。 建完项目后,可以看到默认情况下已经建立了很多文件夹,这里简略说一下各个文件夹的作用。 Content——存放应用需要的一些资源文件,如图片、CSS等。 Controllers——存放控制器类。 Models——存放业务模型组件。 Scripts——存放JavaScript脚本文件。 Views——存放视图。 现在不了解一些概念没关系,后续文章将慢慢解释。 本程序中包括MVC基本的使用以及MVC内置拦截器( 在ASP.NET MVC中,有三种拦截器:Action拦截器、Result拦截器和Exception拦截器。)本程序中用到了第一种和第三种。其实也没什么神秘的,就是一个普通的类而已。只不过需要继承FilterAttribute基类,Action拦截器还要实现IActionFilter接口,而Exception拦截器需要实现IExceptionFilter接口。拦截器主要在Controllers目录下的Filters目录下。

62,248

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧