理解ASP.NET MVC底层运行机制

ASP.NET MVC有三大组件(即模型、视图、控制器)。所谓模型,就是MVC需要提供的数据源,负责数据的访问和维护。所谓视图,就是用于显示模型中数据的用户界面。所谓控制器,就是用来处理用户的输入,负责改变模型的状态并选择适当的视图来显示模型的数据。以下是我绘制的MVC三大组件之间的交互图。


从交互图中可以看出,MVC从用户发送请求到页面呈现结果大致经过了五个步骤,分别为:

(1). 用户在浏览器输入地址,向页面发送请求(实则是向控制器发出相关命令);

(2). 控制器接受命令后,向模型请求获得相关的数据;

(3). 模型将相应的数据返回给控制器;

(4). 控制器将相关数据发送到指定的视图;

(5). 指定的视图呈现相关的数据。


从界面中可以看出,Mcirosoft已经约定了一套规范的目录结构,主要功能如下:

Content:寻访CSS、图片等静态资源文件;

Controllers:存放一系列以***Controllers命名的控制器组件,执行与模型和视图的交互(一般业务会提取到业务逻辑层中);

Models:存放Linq To SQL或ADO.NET Data Entity Model等模型组件,也可存放有关的数据操作等(一般提取到数据访问层中),或者是视图层中需要使用的Model模型;

Scripts:存放系统需要的JavaScript文件;

Views:存放与Controllers在与方法对应的视图,注意:如果存在***Controllers控制器,在Views中就必然会映射一个***命名的文件夹。在Views之下的Shared则存放视图组件的公共部分,如.master、样式表等。

此外,Global.asax实现MVC的URL的路由控制,可以在其中的RegisterRoutes()中设置默认的路由,以下是Global.asax的具体路由代码。

public class MvcApplication : System.Web.HttpApplication

    {

        protected void Application_Start()

        {

            AreaRegistration.RegisterAllAreas();

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

            RouteConfig.RegisterRoutes(RouteTable.Routes);

            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //自定义View

            ViewEngines.Engines.Clear();

            ExtendedRazorViewEngine engine = new ExtendedRazorViewEngine();

            engine.AddPartialViewLocationFormat("~/Areas/Common/Views/Shared/{0}.cshtml");

            ViewEngines.Engines.Add(engine);

            //设置MEF依赖注入容器

            MefConfig.RegisterMef();

            //Model去除前后空格

            ModelBinders.Binders.DefaultBinder = new TrimModelBinder();

        }

    }

当MVC在.net framework3.5中运行时,还需要在web.config中的httpModules配置节中注册UrlRoutingModule类,用于解析URL路由,这正是MVC与传统的ASP.NET应用程序的根本区别。

<httpModules>

    <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />

</httpModules>


原文:http://www.cnblogs.com/hmiinyu/archive/2012/05/25/2517730.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在运行 ASP.NET MVC 应用程序后没有弹出网页,可能是由于以下几个原因: 1. 端口被占用:请确保你的应用程序使用的端口没有被其他程序占用。你可以尝试更改应用程序的端口号来解决该问题。在 Visual Studio 中,你可以右键单击项目,选择 "属性",然后在 "Web" 选项卡中更改端口号。 2. 项目没有设置为启动项目:请确保你的 ASP.NET MVC 项目已设置为启动项目。在 Visual Studio 中,你可以右键单击项目,选择 "设为启动项目"。 3. IIS Express 未正确配置:在某些情况下,IIS Express 可能未正确配置,导致无法打开网页。你可以尝试重新安装 IIS Express 或更新 Visual Studio。 4. 防火墙或安全软件阻止访问:请确保你的防火墙或安全软件没有阻止应用程序的访问。你可以尝试禁用防火墙或暂时关闭安全软件来测试是否能够打开网页。 5. 项目中存在错误:如果你的应用程序中存在编译错误或运行时错误,可能会导致网页无法正常打开。请检查 Visual Studio 中的错误列表和输出窗口,以查找并解决任何错误。 6. 缺少依赖项或配置错误:如果你的应用程序依赖于某些第三方库或组件,可能需要确保这些依赖项已正确安装并配置。请检查你的项目文件和应用程序配置文件,确保所有必需的依赖项和配置已正确设置。 如果你尝试了上述解决方法仍然无法解决问题,建议逐步排除问题。可以尝试创建一个简单的 ASP.NET MVC 项目,确保它可以正常运行。随后,逐步将你的代码和配置迁移到新项目中,以确定问题出现的具体原因。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值