asp.net-mvc – 将javascript对象作为字典传输到控制器操作中
发布时间:2020-12-16 00:10:06 所属栏目:asp.Net 来源:网络整理
导读:有没有办法传递这个JavaScript对象 Object { 35=true,179=true,181=true} 进入控制器动作 Dictionaryint,bool 我检查了以下方法: var remoteUrl = "@Url.Action("UpdateProjectStructureSelection")" + "?tlpId=@Model.TopLevelProjectId"; $.post(remoteUr
有没有办法传递这个JavaScript对象
Object { 35=true,179=true,181=true} 进入控制器动作 Dictionary<int,bool> 我检查了以下方法: var remoteUrl = "@Url.Action("UpdateProjectStructureSelection")" + "?tlpId=@Model.TopLevelProjectId"; $.post(remoteUrl,mapSiteSelectionChoices,function(callbackResult) { alert(callbackResult); }); 和 var remoteUrl = "@Url.Action("UpdateProjectStructureSelection")" + "?tlpId=@Model.TopLevelProjectId"; $.post(remoteUrl,{ values : mapSiteSelectionChoices },function(callbackResult) { alert(callbackResult); }); 但是在这两种情况下 public ActionResult UpdateProjectStructureSelection(int tlpId,Dictionary<int,bool> values) 被称为,但价值观是空的. 因为我已经将更复杂的类型转换为控制器动作而没有编写自定义模型绑定器,所以我一直在想我是否只是在这里做错了. 自定义模型绑定器是将它作为字典的唯一方法吗? (除了在客户端使用JsonConvert stringify之外) 加法(这有效,但我喜欢避免额外的代码): public ActionResult UpdateProjectStructureSelection(int tlpId,string values) { var dict = JsonConvert.DeserializeObject<Dictionary<int,bool>>(values); } 解决方法
不是该格式的对象.它需要采用以下格式才能由DefaultModelBinder使用
var data = { 'dict[0].key': '35','dict[0].value': 'True','dict[1].key': '179','values[1].value': 'True',dict[0].key': '8','dict[0].value': 'True' }; $.post(remoteUrl,data,function(callbackResult) { 和控制器 public ActionResult UpdateProjectStructureSelection(Dictionary<int,bool> dict) 如您所述,另一种选择是使用自定义ModelBinder,例如this answer (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- .Net 5分钟搞定网页实时监控
- 24.集成ASP.NETCore Identity
- asp.net-mvc – 使用Entity Framework 6和ViewModel从数据库
- asp.net-mvc – MVC3非顺序隐藏输入索引需要先来吗?
- ASP.NET重定向到默认重定向URL以外的页面
- asp.net-mvc – .NET MVC – 调用控制器来自另一个控制器动
- asp.net – 是否有可能检测到移动浏览器的GPS位置?
- asp.net-mvc – 在ASP.NET身份中角色与声明的最佳实践
- asp.net-mvc – 如何创建ELMAH SQL Server数据库?
- asp.net-web-api – JwtSecurityTokenHandler 4.0.0重大改变
推荐文章
站长推荐
热点阅读