我在Asp.net mvc5中有一个包含对象的viewModel:
public class ConvenioViewModel
{
public Convenio Convenio { get; set; }
public string AnotherProperty {get;set;}
}
我需要在Form Submit中使用json填充此属性,因为我在使用Json隐藏的输入中填充此内容:
@Html.HiddenFor(x => x.Convenio, new { @id = "convenioJson" })
我的Javascript是这样的:
$('#convenioJson').val(JSON.stringify(data.List[i]));
我的Json是这样的:
"{'Descricao':'UNIMED ','Id':1,'CodigoLogin':'bortolop','DataStamp':'/Date(903621226000)/'}"
但是当我提交此表格时,我的财产" Convenio"一片空白。 在表单提交中填充此内容的方法是什么?在ajax 我已经知道了
答案 0 :(得分:2)
它不起作用,因为String类型无法解析为复杂对象。你应该创建这样的自定义数据手册:
public class ConvenioViewModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
ConvenioViewModel viewModel = new ConvenioViewModel() {};
string jsonConvenio = bindingContext.ValueProvider.GetValue("convenio").AttemptedValue;
JavaScriptSerializer jss = new JavaScriptSerializer();
viewModel.Convenio = jss.Deserialize<Convenio>(jsonConvenio);
return viewModel;
}
}
在Application_Start()中添加
ModelBinders.Binders.Add(typeof(ConvenioViewModel), new ConvenioViewModelBinder());
这就是全部!