关于:MVC问题

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

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


谢谢 各位 解答小弟的难题!
...全文
210 22 打赏 收藏 转发到动态 举报
写回复
用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,046

社区成员

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

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

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

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