asp.net-mvc – ASP.NET MVC将模型发布到具有接口的操作
发布时间:2020-12-16 07:04:21 所属栏目:asp.Net 来源:网络整理
导读:我的理解是ASP.NET MVC只允许您将对象POST到Controller中的Actions,其中Action的参数接受已发布的对象作为Concrete类. 有什么方法可以解决这个问题,还是一个不错的选择? 在我的例子中,我有一个接受接口作为参数的动作: public ActionResult SaveAdjustment
我的理解是ASP.NET MVC只允许您将对象POST到Controller中的Actions,其中Action的参数接受已发布的对象作为Concrete类.
有什么方法可以解决这个问题,还是一个不错的选择? 在我的例子中,我有一个接受接口作为参数的动作: public ActionResult SaveAdjustment(IModel model) { switch (model.SubsetType) { // factory like usage } } 对于这个动作,我有很多视图,所有视图都强烈地输入到实现IModel的对象,我希望能够将这些视图发布到这个方法. 当然,运行这个给我错误:
有一个很好的工作吗?或者我是否需要为每个创建一个Action方法并将它们发送到这样的方法? 解决方法
从Request.Form发布时,MVC通常会绑定模型,即名称=值对的集合.在默认实现中不支持绑定接口或抽象类的原因很明显 – mvc无法确定从name = value对创建哪个具体类.如果您在客户端获得了隐藏字段,或者您可以通过任何其他参数确定要创建哪种类型的具体类,则只需创建自定义模型绑定器即可.我相信你可以覆盖DefaultModelBinder的CreateModel方法并重用所有其他内置绑定功能
public class IModelModelBinder : DefaultModelBinder { protected override object CreateModel(ControllerContext controllerContext,ModelBindingContext bindingContext,System.Type modelType) { //Create and return concrete instance } } 并在global.asax中模拟绑定器注册 ModelBinders.Binders.Add(typeof(IModel?),new IModelModelBinder()); 实际上,mvc中的控制器和动作都很薄,某种服务层应该很厚.由于您尝试实施的操作逻辑很快就会变得复杂,我建议将其移至单独的服务中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证
- 在IIS7上运行ASP.NET 1.1的错误(applicationHost.config)
- asp.net – 如何将流excel文件转换为数据表C#?
- 使用高性能Pipelines构建.NET通讯程序
- asp.net-mvc-2 – MVC2 – > MVC3升级
- ASP.NET Core 新建项目 - macOS 环境 - ASP.NET Core 基础教
- asp.net-mvc – 如何检测移动浏览器,并将适当的内容指向它?
- 在asp.net中的web.config的位置元素中有多个路径
- CanvasPath Schema
- asp.net-mvc – 使用动态消息进行流畅验证
推荐文章
站长推荐
- asp.net-mvc – 如何在ASP.NET MVC的所有操作中安
- asp.net – 错误:“配置部分’system.webServer
- asp.net-mvc – 如何在Visual Studio 2008和ASP.
- asp.net – 在fileupload中选择立即调用C#函数文
- 如何使用ASP.NET获取访问者位置(国家,州和城市)
- asp.net-mvc – jwt令牌多租户
- asp.net-mvc – Azure SignalR服务连接未激活
- asp.net-mvc – 如何在MVC4中调用自定义模型绑定
- asp.net-mvc – 如何在MVC5中为用户分配角色?
- asp.net-web-api – Ajax Post:405方法不允许
热点阅读