#asp.net-mvc #json
#asp.net-mvc #json
Вопрос:
Я вызываю эту функцию через объект JSON
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult GetMatchDetails(int id)
{
var match = GetRepository<Match>().Get(id);
return Json(match, JsonRequestBehavior.AllowGet);
}
где соответствие var находится в классе (урезанная версия, но мне не нужно использовать остальные)
public class Match : Entity
{
public virtual DateTime? MatchDate { get; set; }
public virtual ICollection<Boxer> Boxers { get; set; }
public virtual string Location { get; set; }
public virtual MatchResult Result { get; set; }
public virtual int Rounds { get; set; }
}
и вызов из javascript (из вызываемой функции)
var matchStuff = null;
//Get a class which will have the Match and two boxers part of it
$.getJSON("/BoxingPredictionLeague/GetMatchDetails/" MatchId, function(data){
matchStuff = data;
alert(matchStuff.Id);
});
Там, где предупреждение, я попытался выдать идентификатор, используя matchStuff[0].Идентификатор, а также набор совпадений.Идентификатор, но он вообще не выдает предупреждения… кажется, что просто происходит сбой или этот объект равен нулю!
Комментарии:
1. Предложение помочь в его отладке: Установите Firebug в Firefox, запустите его и просмотрите вкладку консоли, когда вы вызываете выполнение этого вызова JSON. Я не уверен, но я думаю, что он должен отображаться там с более подробной информацией о том, что произошло, чем предоставит отладчик VS .
2. ммм, я пытался установить точки останова в javascript как в Chrome, так и в firebug, но по какой-то причине это не срабатывает. Но код после этого действительно попадает. Поскольку у меня есть другой код, который продолжается, пока объект JSON ожидает возврата своих данных … может ли это быть как-то связано с этим?
Ответ №1:
Очевидные вопросы:
Вы уверены, что получаете объект, возвращенный из вашего репозитория?
Вы уверены, что существует свойство ‘Id’? (его нет в примере кода)
В противном случае:
Если вы используете chrome, вы можете сделать следующее, чтобы точно увидеть, что возвращается через Json.
- Инструменты перехода -> Инструменты разработчика
- Нажмите «Ресурсы»
- Под этими кнопками есть небольшая панель, нажмите на XHR.
- Слева вы увидите все вызовы ajax, инициированные страницей. Заголовки покажут, что вы отправляете; содержимое покажет, что вы получили. Содержимое является прямым JSON, но вы должны быть в состоянии определить его оттуда.
Если вы используете firebug:
- Откройте firebug с помощью значка в левом нижнем углу (убедитесь, что он включен)
- Перейдите на вкладку «Сеть»
- Под этими кнопками есть небольшая панель, нажмите на XHR.
- Вы увидите список всех вызовов ajax. развернув его, вы сможете увидеть как заголовки, так и ответ на содержимое.
Один из этих двух методов должен помочь вам отследить его — в противном случае все остальное выглядит корректно в вашем примере кода.
Комментарии:
1. ммм, кажется, мой папа не вернется к моему объекту json… нужно ли мне что-либо делать с моим классом, прежде чем я передам его обратно? обязательно ли это должна быть ICollection или что-то в этом роде?
2. Вы должны иметь возможность просто передать объект как есть, используя Json(…). Что отображается в вашем содержимом XHR как возвращаемое? Моя другая мысль заключается в том, что
virtual
ключевое слово может отключать функцию JSON. Есть ли причина, по которой они нужны вам в свойствах вашего объекта?