关于:MVC问题

hetengfei_ 2012-04-16 10:01:13
MVC ,一个写好的框架,太难看懂了。

请问:
1· MVC 的入口函数在哪里? -----不像winForm 入口 Main 函数那么清晰啊。
2· 每个用户请求时,都会创建 ViewData, TempData 等等对象,在哪里创建?
3· 每个用户请求时,触发了哪些事件,事件实体在哪里定义?


谢谢 各位 解答小弟的难题!
...全文
215 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
想念旧时光 2012-04-17
  • 打赏
  • 举报
回复
1.MVC是通过路由指向的、指向的是action。
2、 ViewData, TempData 都是键值对的形式传值的、在action里面创建。
ViewData是在当前的action可以使用、TempData是可以跨多个 action使用的、但是只能使用一次。相当于一次性筷子。
3、用户请求是、一般都是form的提交。
hetengfei_ 2012-04-16
  • 打赏
  • 举报
回复
再请 大侠 解释一下。
hetengfei_ 2012-04-16
  • 打赏
  • 举报
回复
创建处 的意思是 实例化的地方
hetengfei_ 2012-04-16
  • 打赏
  • 举报
回复
还有,ViewData, TempData等数据 ,应该是dictionary<string object> HasTable 之类的数据类型,
即是数据类型又 不是C# 特有的,必有它的声明地方, 请问在哪里声明啊?

在 Controller 的Action 中好像只是调用{[ViewData][TempData]}的 add 方法,
我不知它们的创建处 ,就无法得知他的生命周期啊。
求解中。。。
IT-Style 2012-04-16
  • 打赏
  • 举报
回复
1.MVC是基于请求的,当请求到达时首先转到路由表中找到匹配的路由,执行Control与Action,Action指向一个View.
2.ViewData, TempData等数据一般在Control中的Action中创建,转向View时附带着这些数据,以便于数据绑定.
3MVC不同于WebForm,不是基于事件驱动的编程模式,它没有事件触发的概念.它是基于Action提交的编程模型.
hetengfei_ 2012-04-16
  • 打赏
  • 举报
回复
比如:
我新建一个MyController 的类。
并没有写 MyController 实例化哪一部分的代码,
为什么,我请求:域名:// My/xxx.aspx.
却会调用 MyController类 的XXX 方法进行解释。
求解?
hetengfei_ 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

1、webform单一的入口函数,因为是多线程的,一个url请求,就是一个入口

2、controller
3、因为没什么控件,所以貌似没什么事件,你问的是生命周期?
[/Quote]
谢谢楼上的大侠:
我看一n 次了,Controller 时只有类 接口的定义,
没有看到[实例化这些类的代码]啊。
请问:
在哪才能看到 [实例化这些类的代码]?
jiuhexuan 2012-04-16
  • 打赏
  • 举报
回复
1、webform单一的入口函数,因为是多线程的,一个url请求,就是一个入口
2、controller
3、因为没什么控件,所以貌似没什么事件,你问的是生命周期?
  • 打赏
  • 举报
回复
你现在还不到看mvc源码的火候。先做几个mvc的项目,有所感性认识后,再来深入看点源码不迟。
夜色镇歌 2012-04-16
  • 打赏
  • 举报
回复
我感觉就是一个action生成一个view 了解的不太多。。
hetengfei_ 2012-04-16
  • 打赏
  • 举报
回复
我一直是认为是 MVC 是一个类似与 webForm 的程序。
也是有进口函数的,
对于 找不到他的例实化那一部分的代码,
我们同样可以实现,就是用 C# 的反射来找到类,与方法的声明, 并实例化之,
只是把这部分代码隐藏了起来不让我们看。

不知MVC 是不是这样来做到的?
threenewbee 2012-04-16
  • 打赏
  • 举报
回复
你的问题难就难在,它们根本就是错误的问题。

如同我让你证明 1+1=3,这也是一个难题。
hetengfei_ 2012-04-16
  • 打赏
  • 举报
回复
上图是错的,下面的才正确,复制错了地址.


我下载了MVC 2 的源码。
打开源码,太多是看不懂的了,不知从哪里看起。
hetengfei_ 2012-04-16
  • 打赏
  • 举报
回复
是这个图吗?



我下载了MVC 2 的源码。
打开源码,太多是看不懂的了,不知从哪里看起。
wolf_410 2012-04-16
  • 打赏
  • 举报
回复
其实很简单。学习MVC要理解几件事情
Model(实体)
View(视图模版)
Control(控制)

每个请求都会执行Control里面的代码,返回结果时候先找到VIEW模版,然后把数据解析出来。
具体请求是的规则。得先了解MVC的路由概念(通过路由,规定请求那个Control底下的哪个方法)
hetengfei_ 2012-04-16
  • 打赏
  • 举报
回复
谢谢楼上各位支持,小弟只是个初学者,不懂太多了。

像MVC 这类框架好像藏得很深,没有多少改写的余地,可能只是我的不懂才会有这种想法的。
种草德鲁伊 2012-04-16
  • 打赏
  • 举报
回复
入口点看这里 http://www.cnblogs.com/artech/archive/2007/09/09/887528.html

看ControllerBase的源代码

看HttpApplication
MSDNXGH 2012-04-16
  • 打赏
  • 举报
回复
敢问兄台是从桌面软件转型过来的?
那一抹嫣红 2012-04-16
  • 打赏
  • 举报
回复
补充,2,记得viewdata只能当前页面有效,tempdata可以传递到页面(控件)
那一抹嫣红 2012-04-16
  • 打赏
  • 举报
回复
1,看请求的Controller, 就是看url下面的路由
2,viewdata及tempdata一般在 cs文件里定义,当然也可以再cshtml里@{}定义
3,这个还是用普通的html来看待吧,看form里的action
加载更多回复(2)

62,242

社区成员

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

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

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

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