Can you give me any general advice on how to debug ASP.NET MVC Binding?
When everything works as expected, ASP.NET MVC is great. But if something does not, like something doesn’t bind for some unknown reason, I find it hard to trace down the problem and find myself spending hours tracking down a seemingly simple problem.
Let’s imagine you land in a controller method like this:
[HttpPost]
public ActionResult ShipmentDetails(Order order)
{
//do stuff
}
Let’s further imagine that the Order class looks like this:
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;}
}
What are good places to start when Order in the controller method is not bound correctly? What are good places to start when only parts of the Order are bound correctly?
As Darin has suggested, start with inspecting what is being sent from the client to the server using something like Firebug, Fiddler, or other web debugging proxy tool.
Failing that, you might want to step through the source code to see what’s happening during binding.
Two ways that I can recommend doing this are
Include the System.Web.Mvc source code project in your application and reference this. This is good for learning but probably not recommended for a commerical application.
Download the symbols for System.Web.Mvc from the Microsoft Symbol servers, change your settings to be able to debug framework source code and set a break point appropriately to step through.