Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
368 views
in Technique[技术] by (71.8m points)

Best practices for debugging ASP.NET MVC Binding

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Although @russ's answer is useful and will sometimes be necessary, both options seem a little low level when the main question is more about the big picture. Thus, I'd recommend Glimpse.

From its about page:

… Glimpse allows you to debug your web site or web service right in the browser. Glimpse allows you to "Glimpse" into what's going on in your web server. In other words what Firebug is to debugging your client side code, Glimpse is to debugging your server within the client.

And since you've specifically asked about data binding, you'll want to look at the binding tab documentation. You'll be able to see, again from the docs:

  1. Ordinal: Order in which the MVC Model Binding infrastructure attempted to bind the available data
  2. Model Binder: Model Binder that was used in a given scenario
  3. Property/Parameter: Name of the thing that the Binder was trying to bind
  4. Type: Type of the thing that the Binder was trying to bind
  5. Attempted Value Providers: Providers that the Binder attempted to use to get a given value (and whether it was successful)
  6. Attempted Value: The actual value that the provider has to work with (post type conversation, etc.)
  7. Culture: The culture that was used to parse the raw value Raw Value: The raw value that the provider has to work with (pre type conversation, etc.)

See the quick start. Briefly:

  1. Install the glimpse.mvc3 package
  2. Go to http://yourhost/yourapp/Glimpse.axd and "turn it on."
  3. Click on the glimpse icon on the bottom right of any view in your app for details.

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...