ASP.NET, C#, Visual Studio, 存档

asp. net mvc: 导览游

Jason / 六月 25, 2008

我们都读过什么是 mvc, 但它到底是如何工作的呢?是什么螺母和螺栓, 使 mvc 魔术发生?幸运的是, microsoft 已经向 asp. net mvc 发布了源代码, 我们可以阅读详细信息。但是, 如果你和我一样阅读源代码与真正了解应用程序的工作原理有很大的不同。幸运的是, 自从源代码发布后, 我们可以做的远不止于阅读, 我们可以使用调试器来逐步完成它。

visual studio 中的调试器对于现代开发人员来说是一个非常有用的工具。我经常使用调试器作为开发代码的第一个调试路由。有趣的是, 我们可以使用相同的调试器遍历 asp. net mvc, 以便更好地了解它的运行方式。

我们需要做的第一件事是将源代码下载到 asp. net mvc, 并在启用调试的情况下对其进行编译。源代码可以从它的 codeplex 页面下载。下载包含 visual studio 2008 项目。只需打开项目并进行重建。完成后, 您应该会在提取下载的源代码的文件夹中的 bin 目录中的目录中看到四个文件。

在这些文件中, 我们只对其中的两个感兴趣。System.Web.Mvc.dll 和 System.Web.Mvc.pdb。  请记下这些文件在您的计算机上的位置, 因为我们将需要添加对这些文件的引用。

在 visual studio 的新实例中, 允许创建新的 asp. net mvc 应用程序。我们需要做的第一件事是删除对 System.Web.Mvc 的引用。展开引用文件夹, 右键单击 System.Web.Mvc 并选择 "删除"

删除 System.Web.Mvc 的引用后, 您现在需要将其添加回。只有这次, 我们将引用我们刚刚编译的 dll, 而不是引用 asp. net mvc 附带的 dll。通过右键单击引用文件夹并选择 "添加引用…", 您将获得浏览引用的选项。只需导航到我要求您记住之前的路径, 然后选择 System.Web.Mvc.dll 文件, 然后单击 "确定"。

现在, 我们都已准备好开始调试 asp. net mvc 的内部。对于启动器, 导航到预先生成的家庭控制器, 并在 index 方法的第一行上放置个断点。  现在, 在启用调试的情况下启动站点。

完成所有编译并启动应用程序后, visual studio 实例应立即停止。

此时, 在 "调用堆栈" 窗口中, 您应该会看到 System.Web.MVC.DLL 的条目, 并且这些条目应为黑色 (而不是灰色)。这意味着 visual studio 具有需要向我们显示这些方法的源代码的调试信息。这正是我们所尝试的, visual studio 现在将我们都以与代码非常相似的方式逐步完成 asp. net mvc 代码。让我们从详细分析调用堆栈开始。

在调用堆栈中, 我们看到以下内容:

mvcapation.1. dll!MvcApplication1.Controllers.HomeController.Index () System.Web.Mvc.DLL!!!System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod (...) System.Web.Mvc.DLL!!!System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters.AnonymousMethod (...) System.Web.Mvc.DLL!!!System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (...) System.Web.Mvc.DLL!!!System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters.AnonymousMethod () System.Web.Mvc.DLL!!!System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters (...) System.Web.Mvc.DLL!!!System.Web.Mvc.ControllerActionInvoker.InvokeAction (...) System.Web.Mvc.DLL!!!System.Web.Mvc.Controller.Execute (...) System.Web.Mvc.DLL!!!System.Web.Mvc.Controller.System.Web.Mvc.IController.Execute (...) System.Web.Mvc.DLL!!!System.Web.Mvc.MvcHandler.ProcessRequest (...) System.Web.Mvc.DLL!!!System.Web.Mvc.MvcHandler.ProcessRequest (...) System.Web.Mvc.DLL!!!System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest (...) read more

Visual Studio, 存档

更新: 使用 visual web 开发人员快速2008年的 asp. net mvc

Jason / 六月 14, 2008

我之前的文章中, 我讨论了如何让 asp. net mvc 使用 visual web 开发人员 (vwd) express 2008。当时, vwd 不支持 asp. net mvc 所需的 web 应用程序项目。

幸运的是, 即将推出的 vwd 服务包1增加了对 web 应用程序项目的支持, 并对 asp. net mvc 的支持开箱即用。目前, 该服务包处于测试版中, 可从以下位置下载: read more