У меня есть модель под названием Покупка с различными свойствами:
public class Purchase
{
[JsonProperty(PropertyName = "amount", NullValueHandling = NullValueHandling.Ignore)]
public int Amount
{
get;
set;
}
[JsonProperty(PropertyName = "currency_code", NullValueHandling = NullValueHandling.Ignore)]
public string CurrencyCode
{
get;
set;
}
}
JSON:
{
amount: 3000,
currency_code: "USD"
}
Контроллер:
[AllowAnonymous]
public class ProtoController : Controller
{
private readonly IPurchaseManagerFactorySelector purchaseManagerFactorySelector = null;
public ProtoController(IPurchaseManagerFactorySelector purchaseManagerFactorySelector)
{
this.purchaseManagerFactorySelector = purchaseManagerFactorySelector;
}
[Route("opt/proto/index/{identifier}")]
[HttpGet]
public async Task<ActionResult> Index(string identifier)
{
return View();
}
[Route("opt/proto/index/{identifier}")]
[HttpPost]
public async Task<ActionResult> Index(string identifier, Request.Purchase purchase)
{
IPurchaseManager purchaseManager = purchaseManagerFactorySelector.GetFactory(identifier);
return View();
}
}
КогдаJSON публикуется в ApiController, все свойства заполняются правильно, однако, когда тот же JSON публикуется в контроллере, заполняется только сумма - CurrencyCode имеет значение null.Я кратко добавил новое свойство с именем Currency_Code, которое было заполнено, похоже, что атрибут JsonProperty игнорируется в MVC?Я добавил атрибут DataMember, однако это не имело никакого эффекта, поэтому я удалил его.Используется Json.Net, но я не понимаю, в чем разница?