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代理工具。

如果不这样做,您可能需要通过源代码来查看绑定过程中发生了什么。

两种方法,我可以推荐这样做

  1. 在您的应用程序中包含System.Web.Mvc源代码项目并引用此项目 。 这对学习很有帮助,但可能不推荐用于商业应用。

  2. 从Microsoft Symbol服务器下载System.Web.Mvc的符号,更改您的设置以便能够debugging框架源代码并适当地设置中断点以逐步完成

虽然@ russ的答案是有用的,有时也是必要的,但是当主要问题更多的是关于大局的时候,这两个选项似乎有点低。 因此,我build议Glimpse 。

从其页面:

… Glimpse允许您在浏览器中debugging您的网站或Web服务。 Glimpse可以让你“窥探”你的Web服务器正在发生的事情。 换句话说,Firebug是debugging你的客户端代码,Glimpse是在客户端debugging你的服务器。

而且由于您已经具体询问了数据绑定,所以您需要查看绑定选项卡文档 。 您将可以从文档中再次看到:

  1. 序号 :MVC模型绑定基础结构尝试绑定可用数据的顺序
  2. 模型绑定器 :在给定的场景中使用的模型绑定器
  3. 属性/参数 :活页夹试图绑定的东西的名称
  4. types :活页夹试图绑定的东西的types
  5. 尝试值提供者 :Binder试图用来获得给定值的提供者(以及是否成功)
  6. 尝试值 :提供者必须使用的实际值(posttypes对话等)
  7. 文化 :用于parsing原始价值的文化原始价值:提供者必须使用的原始价值(前置式对话等)

看到快速启动 。 简述:

  1. 安装glimpse.mvc3软件包
  2. 转到http://yourhost/yourapp/Glimpse.axd并“打开它”。
  3. 单击应用程序中任何视图右下angular的“瞥见”图标以获取详细信息。

下载并安装FireBug是一个好的开始,看看从客户端发送到服务器的内容。 然后,您将看到缺less的东西,不正确的…博客文章(例如模型绑定到列表)是很好的读取,以及熟悉默认模型联编程序使用的正确语法。