asp.net-mvc-4 – ASP.NET MVC ViewModel继承问题
我有以下ViewModels:
public class MyViewModel { public BaseViewModel mySubViewModel; } public class ChildViewModel: BaseViewModel {} 然后我创建一个MyViewModel模型,其中包含ChildViewModel类型的属性.在视图中,它显示得很好. 然后我点击保存按钮向模型提交更改,然后调用以下控制器: [HttpPost] public ActionResult Edit(MyViewModel model) { return null; } 令我惊讶的是,属性mySubViewModel现在是BaseViewModel类型而不是ChildViewModel!我不知道这里发生了什么.我究竟做错了什么 ? 解决方法
你不应该对此感到惊讶.你没有做错任何事.这是设计的.默认模型绑定器看到您的控制器操作正在采用MyViewModel参数并尝试将POST请求的内容绑定到它.默认的模型绑定器绝对无法知道您可能已经编写了一些派生类(例如,在您的情况下为ChildViewModel),并且您希望在此处实例化这些派生类.您已将此具体视图模型实例从GET操作传递到视图的事实对POST操作没有影响.根据HTTP和默认模型绑定器看到的内容来考虑它.例如,可以从一些完全不同的客户端调用此POST操作,而不是从表单提交调用.例如,可以是对POST操作执行HTTP请求的iPhone应用程序.看,现在它非常有意义.默认模型绑定器只能看到POST请求的有效负载和您指定为操作参数的类型.这就是他所做的=>它实例化此类型并从POST有效内容数据绑定其属性. 因此,一种可能性是编写一个自定义模型绑定器,它将实例化您希望的视图模型的具体实例.我在 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 你相信ASP.Net MVC已经准备好了吗?
- 重命名ASP.NET_SessionId
- asp.net-mvc – 有没有更好的方法来使用MVC 4和Entity Fram
- 单元测试 – 有没有办法单元测试在视图中设置的ASP.NET MVC
- ASP.NET Web站点项目中的“复制本地”等效参考
- .Net multipart / form-data form enctype和UTF-8“special
- 模型 – 视图 – 控制器 – MVC控制器索引有时404?
- asp.net-mvc-3 – ASP.Net Mvc 3 Url.Action方法使用先前请
- iis – 如何用经典的asp实现openid支持?
- asp.net – SQL Server预登录握手确认错误
- asp.net – 使用Web API和JSON补丁文档进行模型验
- asp.net-mvc – 返回局部视图的RedirectToAction
- asp.net-mvc – 我可以在使用区域时将system.web
- asp.net-mvc – ASP.NET MVC:用户控制的好替换?
- asp.net-mvc-3 – 模型binder属性类型int的问题
- asp-classic – ASP Classic中的溢出
- asp.net – 无法在Page回调中调用Response Redir
- asp.net-web-api – ExtensionlessUrlHandler和“
- asp.net – 额外的文件夹附加到我的Web根目录在A
- asp.net-mvc – ASP.NET MVC中基础控制器类的好候