Подтвердить что ты не робот

Рекомендации по отладке ASP.NET MVC Binding

Можете ли вы дать мне общие рекомендации о том, как отлаживать привязку ASP.NET MVC?

Когда все работает так, как ожидалось, 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 связаны правильно?

4b9b3361

Ответ 1

Как предложил Дарин, начните с проверки того, что отправляется от клиента на сервер, используя что-то вроде Firebug, Fiddler или другого прокси-сервера для веб-отладки.

В противном случае вы можете пройти через исходный код, чтобы узнать, что происходит во время привязки.

Два способа, которые я могу рекомендовать, это

Ответ 2

Хотя @russ answer полезен и иногда будет необходим, оба варианта кажутся немного низкими, когда основной вопрос больше касается общей картины. Поэтому я бы порекомендовал взглянуть.

Из его о странице:

& Hellip; Glimpse позволяет отлаживать ваш веб-сайт или веб-сервис прямо в браузере. Glimpse позволяет вам "взглянуть" на то, что происходит на вашем веб-сервере. Другими словами, что такое Firebug для отладки кода на стороне клиента, Glimpse - для отладки вашего сервера внутри клиента.

И поскольку вы специально задали вопрос о привязке данных, вам нужно обратиться к документации по вкладке привязки. Вы сможете увидеть снова из документов:

  1. Порядковый: порядок, в котором инфраструктура привязки модели MVC пыталась связать доступные данные
  2. Связыватель модели: Связыватель модели, который использовался в данном сценарии
  3. Свойство/Параметр: имя вещи, которую связыватель пытался связать
  4. Тип: тип вещи, которую связыватель пытался связать
  5. Поставщики попыток значения. Поставщики, которые связыватель пытался использовать для получения заданного значения (и было ли оно успешным)
  6. Попытка значения: фактическое значение, с которым должен работать поставщик (разговор по типу записи и т.д.)
  7. Культура: культура, которая использовалась для анализа необработанной ценности Необработанное значение: необработанное значение, с которым должен работать поставщик (предварительный разговор и т.д.)

Смотрите краткий старт. Кратко:

  1. Установите glimpse.mvc3 пакет
  2. Перейдите к http://yourhost/yourapp/Glimpse.axd и "включите его".
  3. Нажмите на иконку в правом нижнем углу любого представления в вашем приложении для получения подробной информации.

Ответ 3

В моем случае, глядя на свойство ModelState в методе контроллера, мы получили ответы, почему сбой привязки модели.

enter image description here

Ответ 4

Хорошее место для начала - загрузить и установить FireBug и посмотреть, что будет отправлено с клиента на сервер. Затем вы увидите, что отсутствует, неверно,... Сообщения в блоге, такие как привязка к списку в списке, также хорошо читаются, чтобы познакомиться с соответствующий синтаксис, используемый в используемом по умолчанию образцом.

Ответ 5

Со стороны Visual Studio:

  • Установите точку останова при входе в конечную точку.
  • Откройте пункт "Немедленно" через меню "Отладка".

Введите ModelState.Keys.ToList()

  • Это покажет ошибки привязки по имени/ключу.

А еще лучше введите ModelState.Values.ToList()...

Model State Values display