Учитывая следующий фрагмент на стороне клиента код:Как правильно моделировать привязку json с под-объектами к ASP.NET MVC ViewModel?
var vm = {
Input : "Label: Value",
Rules : [
{ Name : "RemoveString",
Params : [
"Label: "
]
}
]
};
$.post("/API/ApplyRule", vm, function(data) { });
И следующее ViewModel на стороне сервера:
[Serializable]
public class ApplyRuleRequestViewModel
{
public string Input { get; set; }
public List<RuleViewModel> Rules { get; set; }
}
[Serializable]
public class RuleViewModel
{
public string Name { get; set; }
public List<string> Params { get; set; }
}
А следующий код контроллера:
public class APIController : Controller
{
[HttpPost]
public ActionResult ApplyRule(ApplyRuleRequestViewModel model)
{
//Problem here... model is not fully deserialized into the ViewModel object.
return View();
}
}
Я имею проблему пытаясь сериализовать часть правил на стороне ViewModel на стороне клиента. При отладке кода на контрольной строке выше упомянутой // Проблема ..., я вижу, что свойства объекта верхнего уровня сделали это, но не под-объектом. Таким образом, я получаю что-то вроде:
var vm = new ApplyRuleRequestViewModel {
Input = "Label: Value",
Rules = new List<RuleViewModel> {
new RuleViewModel { Name = null, Parameters = null }
}
}
Я ожидал что-то вроде:
var vm = new ApplyRuleRequestViewModel {
Input = "Label: Value",
Rules = new List<RuleViewModel> {
new RuleViewModel {
Name = "RemoveString",
Parameters = new List<string> { "Label: " }
}
}
}
Что я делаю неправильно здесь? Почему он не привязывает массив правил правильно?
Вам нужно создать собственное собственное связующее устройство, чтобы связать его правильно? Если да, то как?
ОК попробует ... –
Спасибо, что сработало :) –