debuggingASP.NET MVC绑定的最佳实践
你可以给我任何关于如何debuggingASP.NET MVC绑定的一般build议吗?
当一切正常,ASP.NET MVC是伟大的。 但是,如果事情没有发生,就像某些未知的事情一样,我发现很难追查这个问题,发现自己花费了几个小时来追踪一个看起来很简单的问题。
让我们想象一下,像这样的控制器方法:
[HttpPost] public ActionResult ShipmentDetails(Order order) { //do stuff }
让我们进一步想象一下Order类看起来像这样:
public class Order { public decimal Total {get; set;} public Customer Customer {get; set;} } public class Customer { public string Name {get; set;} public string Phone {get; set;} }
控制器方法中的Order
未正确绑定时,什么地方可以启动? 只有部分Order
被正确绑定时,什么才是好的开始?
正如Darin所build议的,首先检查从客户端发送到服务器的东西,使用诸如Firebug,Fiddler或其他Webdebugging代理工具。
如果不这样做,您可能需要通过源代码来查看绑定过程中发生了什么。
两种方法,我可以推荐这样做
-
在您的应用程序中包含System.Web.Mvc源代码项目并引用此项目 。 这对学习很有帮助,但可能不推荐用于商业应用。
-
从Microsoft Symbol服务器下载System.Web.Mvc的符号,更改您的设置以便能够debugging框架源代码并适当地设置中断点以逐步完成 。
虽然@ russ的答案是有用的,有时也是必要的,但是当主要问题更多的是关于大局的时候,这两个选项似乎有点低。 因此,我build议Glimpse 。
从其页面:
… Glimpse允许您在浏览器中debugging您的网站或Web服务。 Glimpse可以让你“窥探”你的Web服务器正在发生的事情。 换句话说,Firebug是debugging你的客户端代码,Glimpse是在客户端debugging你的服务器。
而且由于您已经具体询问了数据绑定,所以您需要查看绑定选项卡文档 。 您将可以从文档中再次看到:
- 序号 :MVC模型绑定基础结构尝试绑定可用数据的顺序
- 模型绑定器 :在给定的场景中使用的模型绑定器
- 属性/参数 :活页夹试图绑定的东西的名称
- types :活页夹试图绑定的东西的types
- 尝试值提供者 :Binder试图用来获得给定值的提供者(以及是否成功)
- 尝试值 :提供者必须使用的实际值(posttypes对话等)
- 文化 :用于parsing原始价值的文化原始价值:提供者必须使用的原始价值(前置式对话等)
看到快速启动 。 简述:
- 安装glimpse.mvc3软件包
- 转到
http://yourhost/yourapp/Glimpse.axd
并“打开它”。 - 单击应用程序中任何视图右下angular的“瞥见”图标以获取详细信息。
下载并安装FireBug是一个好的开始,看看从客户端发送到服务器的内容。 然后,您将看到缺less的东西,不正确的…博客文章(例如模型绑定到列表)是很好的读取,以及熟悉默认模型联编程序使用的正确语法。