日期:2014-05-18  浏览次数:20456 次

关于:MVC问题
MVC ,一个写好的框架,太难看懂了。

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


谢谢 各位 解答小弟的难题!

------解决方案--------------------
1、webform单一的入口函数,因为是多线程的,一个url请求,就是一个入口
2、controller
3、因为没什么控件,所以貌似没什么事件,你问的是生命周期?
------解决方案--------------------
1.MVC是基于请求的,当请求到达时首先转到路由表中找到匹配的路由,执行Control与Action,Action指向一个View.
2.ViewData, TempData等数据一般在Control中的Action中创建,转向View时附带着这些数据,以便于数据绑定.
3MVC不同于WebForm,不是基于事件驱动的编程模式,它没有事件触发的概念.它是基于Action提交的编程模型.
------解决方案--------------------
探讨

比如:
我新建一个MyController 的类。
并没有写 MyController 实例化哪一部分的代码,
为什么,我请求:域名:// My/xxx.aspx.
却会调用 MyController类 的XXX 方法进行解释。
求解?

------解决方案--------------------
探讨

还有,ViewData, TempData等数据 ,应该是dictionary<string object> HasTable 之类的数据类型,
即是数据类型又 不是C# 特有的,必有它的声明地方, 请问在哪里声明啊?

在 Controller 的Action 中好像只是调用{[ViewData][TempData]}的 add 方法,
我不知它们的创建处 ,就无法得知他的生命周……

------解决方案--------------------
1,看请求的Controller, 就是看url下面的路由
2,viewdata及tempdata一般在 cs文件里定义,当然也可以再cshtml里@{}定义
3,这个还是用普通的html来看待吧,看form里的action

------解决方案--------------------
补充,2,记得viewdata只能当前页面有效,tempdata可以传递到页面(控件)
------解决方案--------------------
敢问兄台是从桌面软件转型过来的?
------解决方案--------------------
入口点看这里 http://www.cnblogs.com/artech/archive/2007/09/09/887528.html

看ControllerBase的源代码

看HttpApplication
------解决方案--------------------
其实很简单。学习MVC要理解几件事情
Model(实体)
View(视图模版)
Control(控制)

每个请求都会执行Control里面的代码,返回结果时候先找到VIEW模版,然后把数据解析出来。
具体请求是的规则。得先了解MVC的路由概念(通过路由,规定请求那个Control底下的哪个方法)
------解决方案--------------------
你的问题难就难在,它们根本就是错误的问题。

如同我让你证明 1+1=3,这也是一个难题。
------解决方案--------------------
我感觉就是一个action生成一个view 了解的不太多。。
------解决方案--------------------
你现在还不到看mvc源码的火候。先做几个mvc的项目,有所感性认识后,再来深入看点源码不迟。
------解决方案--------------------
1.MVC是通过路由指向的、指向的是action。
2、 ViewData, TempData 都是键值对的形式传值的、在action里面创建。
ViewData是在当前的action可以使用、TempData是可以跨多个 action使用的、但是只能使用一次。相当于一次性筷子。
3、用户请求是、一般都是form的提交。