Я пытаюсь вернуть объект в запрос ajax с контроллером api 2 в приложении MVC 5. мой контроллер выглядит так:
public class RFQsController : ApiController
{
private ApplicationDBContext db = new ApplicationDBContext();
[HttpGet]
public Models.RFQChecklist.RFQ GetRFQByQuote(string number)
{
var quote = db.QuoteSet.FirstOrDefault(q => q.Number == number);
if(quote != null)
{
return quote.RFQ?.FirstOrDefault();
}
else
{
return null;
}
}
}
Запрос предложений выглядит следующим образом:
public class RFQ
{
public int ID { get; set; }
public int QuoteID { get; set; }
//other values
[XmlIgnore, JsonIgnore]
public virtual Quote.Quote Quote { get; set; }
public virtual ICollection<RFQ_Signoff> Signoffs { get; set; }
}
Важно игнорировать Quote, потому что Quote содержит ссылку на содержащиеся в ней запросы, так что это будет циклическая ссылка. Поэтому при сериализации RFQ для потребления я пытаюсь игнорировать Quote, потому что Quote должен ссылаться на RFQ. Проблема в том, что XmlIgnore не ... игнорирует. Я также попробовал ScriptIgnore
и комбинацию DataContract
/ DataMember
. Независимо от того, что я делаю, сериализатор MVC 5, кажется, пытается (и не может) сериализовать объект Quote
снова.
Я вполне уверен, что это из-за этого значения, потому что, если я удаляю JsonIgnore
, тогда он не работает, когда я пытаюсь получить как Json, но если я включаю его, это работает.