4

我看过生命周期的流程图,但他们似乎从来没有回答过这个问题,或者我只是不明白。

因此,如果用户点击注册页面是:

  1. 路由引擎选择控制器。
  2. 控制器检查应该显示哪个视图,检查它是否是强类型的,如果是,则实例化正确的模型。
  3. 调用视图,传入空模型。

我也对填写并提交表单时会发生什么感兴趣。

我不是在寻找任何超级技术,只是一些概念性的东西......

4

1 回答 1

4

无论用户操作(点击链接、输入 URL、提交表单),MVC 应用程序的基本流程如下:

  1. 根据路由表控制器的名称和将处理请求的方法(又名动作)被定义。
  2. 如果有任何请求参数(例如 form 中的值),它们将与 Action 的参数相关联。
  3. 生成请求上下文(包含有关请求、客户端、服务器等的详细信息)
  4. 创建控制器类型的对象,使用给定参数调用此对象的操作(方法)。
  5. 处理后,Action 返回一个合适的结果,很可能是 View(也可以是 Json,纯文本,任何东西)。
  6. 视图被渲染并作为响应发送回客户端。

当然,这里省略了很多细节,但这是大意。

更新:关于模型的一些话。模型用于将数据从控制器传递到视图。主要有两种方法:

  1. 使用 ViewData 集合 - 基本上是一个常规的键值字典。在 Controller 中,它充满了数据:

    ViewData["SomeKey"] = "someValue"; //not only string, any object can be here
    return View();
    

    在 View 中,值是通过键检索的:

    <%= ViewData["SomeKey"] %>
    
  2. 强类型视图。将创建一个包含必要数据的模型类。用这个类指定View是强类型的,当Action返回一个View对象时,它会传递这个类的一个实例作为参数。这是一些代码示例:

    模型:

    public class SomeModel
    {
        public string SomeKey { get; set; }
    }
    

    控制器:

    SomeModel model = new SomeModel();
    model.SomeKey = "someValue";
    return View(model);
    

    看法:

    <%@ Page ... Inherits="System.Web.Mvc.ViewPage<SomeModel>" %>
    ...
    <%= Model.SomeKey %>
    
于 2011-08-16T14:59:45.707 回答