Я пытаюсь отправить JSON в метод Action:
[HttpPost]
public virtual ActionResult KoUpdateAccount(CostCentreDTOX cc)
{
if (cc.NameCC == null)
{
return Json(new { message = "Im null" });
}
else
{
string s = cc.NameCC;
return Json(new { message = s });
}
}
Где CostCentreDTOX определяется как:
[Serializable]
public class CostCentreDTOX
{
public int CostCentreId { get; set; }
public int IdTransactionType { get; set; }
public string NameCC { get; set; }
}
Json создается с помощью (я использую Knockoutjs):
var json = ko.toJSON(this.costCentres()[0]);
Это приводит к следующей строке (что я и хочу):
"{"CostCentreId":5,"IdTransactionType":2,"NameCC":"Impuestos"}"
Метод, который отправляет все на сервер:
this.save = function() {
var json = ko.toJSON(this.costCentres()[0]);
api.postCud({
url: "/admin/Accounts/KoUpdateAccount/",
dataType: 'JSON',
data: json,
type: "post",
contentType: "application/json; charset=utf-8",
success: function(result) { alert(result.message) }
});
}
Где this.costCentre () [0] - это объект, определенный следующим образом:
function costCentre(CostCentreId, IdTransactionType, NameCC) {
this.CostCentreId = ko.observable(CostCentreId);
this.IdTransactionType = ko.observable(IdTransactionType);
this.NameCC = ko.observable(NameCC);
}
Однако параметр Action cc просто получает значения по умолчанию, как если бы JsonValueProvider не был зарегистрирован. Но я использую ASP.NET MVC 3, поэтому он должен быть там, верно? Просто там.
EDIT:
Я попытался добавить в файл Global.asax следующее:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
}
Но все же, cc создается со значениями по умолчанию.
любые предложения ??