问题标签 [modelbinders]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - 复杂复合对象的自定义模型绑定器帮助
我正在尝试编写自定义模型绑定器,但我很难弄清楚如何绑定复杂的复合对象。
这是我要绑定的类:
这就是我尝试编写自定义活页夹的样子:
有任何想法吗
谢谢托尼
asp.net-mvc - 标准 ASP.NET MVC ModelBinder 的文档在哪里?
对于 ASP.NET MVC 中标准模型绑定器的功能,我似乎无法找到任何权威的最新(即 1.0 最终版)文档,特别是在绑定涉及集合的复杂对象方面(以及这对 HTML 表单的命名要求)
我找到了 Phil Haack 的一篇博文(http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx),但它在顶部有一条注释说它是已过时并将更新。这里还有一个有用的答案:Custom Model Binder for Complex Composite objects HELP,但我不知道他是怎么知道这些东西的。
此页面:http ://www.asp.net/learn/mvc/#MVC_ActionFilters标题为“动作过滤器和模型绑定器”,但仅实际包含有关过滤器的信息。
我是否被迫阅读源代码或购买新的“前额帮”书(并希望它比我过去错误购买的其他 Wrox 书更好)?还是我在某处错过了一个很好的参考?
asp.net-mvc - 模型绑定列表
我有一个控制器动作,比如
视图> 看起来像:
显然这种观点是行不通的。我只是无法访问视图中的列表。
这方面的文档也已经过时了,似乎很多模型绑定列表的功能在 beta 版中都发生了变化。
c# - 是否可以接受列表作为 Asp.Net MVC 中复选框的参数?
由于haacked,我知道它可以接受对象列表作为参数,但是来自复选框的Guids列表呢?这有点不同,因为您获得的唯一名称必须是 ID。
任何帮助将不胜感激,谢谢!
asp.net-mvc - 当参数为模型时,ASP.NET MVC 发布文件模型绑定
有没有办法让发布的文件 ( <input type="file" />
) 参与 ASP.NET MVC 中的模型绑定,而无需手动查看自定义模型绑定器中的请求上下文,也无需创建仅将发布的文件作为输入的单独操作方法?
我原以为这会起作用:
但考虑到上述情况,MyFile
它甚至不是绑定上下文中值提供者值的一部分。(OtherProperty
当然是。)但如果我这样做,它会起作用:
那么,为什么当参数是模型时没有发生绑定,我怎样才能让它工作呢?我对使用自定义模型绑定器没有任何问题,但是如何在自定义模型绑定器中执行此操作而不查看Request.Files["MyFile"]
?
为了一致性、清晰性和可测试性,我希望我的代码能够自动绑定模型上的所有属性,包括绑定到已发布文件的属性,而无需手动检查请求上下文。我目前正在使用Scott Hanselman 所写的方法测试模型绑定。
还是我以错误的方式解决这个问题?你会如何解决这个问题?或者由于 Request.Form 和 Request.Files 之间的分离历史,这是设计上不可能的?
asp.net-mvc - ASP.NET MVC - 混合自定义和默认模型绑定
我有一个类型:
由于对订单和项目的要求,我创建了一个自定义模型绑定器,但 Range 仍然可以使用默认模型绑定器。
有没有办法从我的自定义模型绑定器中调用默认模型绑定器以返回 Range 对象?我想我只需要正确设置 ModelBindingContext ,但我不知道如何。
编辑
查看第一个评论和答案 - 似乎从默认模型绑定器继承可能很有用。
到目前为止,要为我的设置添加更多细节,我有:
这可能是一种愚蠢的做法……这是我的第一个模型活页夹。只是指出我当前的实现。
编辑#2
因此,如果我可以像“我已经完成绑定”方法一样挂钩并使用属性调用 Factory 方法,那么覆盖 BindProperty 的答案将起作用。
我想我真的应该看看 DefaultModelBinder 的实现,别再傻了。
asp.net-mvc - 将路由值绑定到作为视图模型一部分的对象的属性
我有以下路线:
我使用 ViewModel:
我需要一种将路由的参数 id 绑定到 Model.ProductDetail.ProductID 的方法。
/Products/Display/2 应该导致:
型号.ProductDetail.ProductID == 2
我知道这看起来有点奇怪:如果我的 ViewModel 只是
公共类 ProductViewModel{ public int Id {get;set;}}
对于处理部分,我更喜欢使用聚合。我真的不能在主 ViewModel 类中有 ID。
我很确定我需要实现自己的 ModelBinder,但我不知道应该在哪里实现自己的规则。
如何将路由参数“id”映射到属性 Model.ProductDetail.ProductID ?
编辑:
这是它的完成方式 -
asp.net-mvc - ASP.NET MVC:将表单 POST 绑定到参数时避免紧耦合
假设我有一个类似的界面:
在 ASP.NET MVC 中,我有一个表单可以发布到这样的控制器操作:
SimpleThing是一个具体的类,几乎没有实现IThing 。
但是,我希望我的所有方法都可以处理接口。我有一个使用 NIBerate 和它自己的IThing实现的数据程序集(我们称之为RealThing)。我无法将 SimpleThing 传递给它,因为它会抱怨“未知实体”。
有没有人对更清洁的方法有任何想法?我正在考虑使用工厂类的方法。但是我如何让 MVC 表单绑定器使用它呢?
谢谢!
asp.net-mvc - 如何使用 Moq 对自定义 ModelBinder 进行单元测试?
我在编写一些单元测试来测试我创建的自定义 ModelBinder 时遇到了一些困难。我尝试进行单元测试的 ModelBinder 是我在此处发布的 JsonDictionaryModelBinder 。
我遇到的问题是使用 Moq 进行模拟所有设置。由于 HttpContextBase 未正确模拟,我不断收到 Null 异常。我认为。
有人可以帮我弄清楚我做错了什么吗?
这是我正在尝试编写但不起作用的单元测试示例:
这是上面使用的“FakeHttpContext”方法:
asp.net-mvc - ASP.NET MVC:从没有 ModelState 错误的空白字符串绑定数字类型
我有一个相当复杂的 ViewModel 包含decimal
属性,这些属性以文本框的形式向用户公开。我想要一个没有值的文本框被解释为零。(底层域对象中的属性不可为空,默认值为 0。)
当DefaultModelBinder
将视图数据绑定到 ViewModel 时,输入的空白字符串的十进制属性被初始化为零(在 .NET 中是标准的),但是DefaultModelBinder
会在空白文本框的 ModelState 中添加错误。结果,ModelState 无效,用户看到一大堆“需要 A 值”。他们留空的文本框的错误。
如何阻止这些错误被添加到 ModelState?