我有以下View模型
public class SaveFileRequestViewModel
{
public string FileName { get; set; }
public ISearchAccounts AccountSearch { get; set; }
}
ISearchAccounts定义如下
public interface ISearchAccounts
{
int Id { get; set; }
SearchTypes SearchType { get; }
string UserId { get; set; }
DateTime CreatedOn { get; set; }
string Description { get; set; }
AccountNumberType AccountNumberType { get; set; }
}
我想要做的是使用模型绑定器来捕获SaveFileRequestViewModel,检查SearchType属性(JSON中提供的属性)并使用JSON.NET序列化到ISearchAccounts的相应实现。 Addtional属性在JSON中,JSON.NET将知道该怎么做。我的问题是,当我尝试绑定SaveFileRequestViewModel属性的AccountSearch属性时,它为null。
bindingContext.ValueProvider.GetValue("AccountSearch");
我可以在特定范围内访问属性,如
bindingContext.ValueProvider.GetValue("AccountSearch.SearchType");
我对其他方法持开放态度,但我想我只是想抓住AccountSearch所包含的提交的JSON部分。
以下是我提交的JSON的示例。根据用户在UI中选择的选项
,它可能会复杂得多{
"FileName":"filename 2014-03-03 16.24.17",
"AccountSearch":
{
"AccountNumberType":"XXX",
"AccountNumbers":"123456789 6789101245",
"SearchType":"Multiple"
}
}
答案 0 :(得分:0)
看看最近的答案:https://stackoverflow.com/a/22082643/148998
总结一下,Asp.net-mvc 3框架有一个默认的JsonValueProviderFactory,只要发布到Action的JSON数据与Model匹配就应该正确绑定数据。
小心将属性的名称弄错,它找不到并绑定它。
我建议将模型的填充版本序列化为JSON,并查看它的结构,只要您将它以相同的结构发送回来就可以了。