问题标签 [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.

0 投票
2 回答
6678 浏览

asp.net-mvc - 复杂复合对象的自定义模型绑定器帮助

我正在尝试编写自定义模型绑定器,但我很难弄清楚如何绑定复杂的复合对象。

这是我要绑定的类:

这就是我尝试编写自定义活页夹的样子:

有任何想法吗

谢谢托尼

0 投票
1 回答
426 浏览

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 书更好)?还是我在某处错过了一个很好的参考?

0 投票
3 回答
175 浏览

asp.net-mvc - 模型绑定列表

我有一个控制器动作,比如

视图> 看起来像:

显然这种观点是行不通的。我只是无法访问视图中的列表。

这方面的文档也已经过时了,似乎很多模型绑定列表的功能在 beta 版中都发生了变化。

0 投票
1 回答
772 浏览

c# - 是否可以接受列表作为 Asp.Net MVC 中复选框的参数?

由于haacked,我知道它可以接受对象列表作为参数,但是来自复选框的Guids列表呢?这有点不同,因为您获得的唯一名称必须是 ID。

任何帮助将不胜感激,谢谢!

0 投票
4 回答
18512 浏览

asp.net-mvc - 当参数为模型时,ASP.NET MVC 发布文件模型绑定

有没有办法让发布的文件 ( <input type="file" />) 参与 ASP.NET MVC 中的模型绑定,而无需手动查看自定义模型绑定器中的请求上下文,也无需创建仅将发布的文件作为输入的单独操作方法?

我原以为这会起作用:

但考虑到上述情况,MyFile它甚至不是绑定上下文中值提供者值的一部分。OtherProperty当然是。)但如果我这样做,它会起作用:

那么,为什么当参数是模型时没有发生绑定,我怎样才能让它工作呢?我对使用自定义模型绑定器没有任何问题,但是如何在自定义模型绑定器中执行此操作而不查看Request.Files["MyFile"]

为了一致性、清晰性和可测试性,我希望我的代码能够自动绑定模型上的所有属性,包括绑定到已发布文件的属性,而无需手动检查请求上下文。我目前正在使用Scott Hanselman 所写的方法测试模型绑定。

还是我以错误的方式解决这个问题?你会如何解决这个问题?或者由于 Request.Form 和 Request.Files 之间的分离历史,这是设计上不可能的?

0 投票
3 回答
18595 浏览

asp.net-mvc - ASP.NET MVC - 混合自定义和默认模型绑定

我有一个类型:

由于对订单和项目的要求,我创建了一个自定义模型绑定器,但 Range 仍然可以使用默认模型绑定器。

有没有办法从我的自定义模型绑定器中调用默认模型绑定器以返回 Range 对象?我想我只需要正确设置 ModelBindingContext ,但我不知道如何。


编辑

查看第一个评论和答案 - 似乎从默认模型绑定器继承可能很有用。

到目前为止,要为我的设置添加更多细节,我有:

这可能是一种愚蠢的做法……这是我的第一个模型活页夹。只是指出我当前的实现。


编辑#2

因此,如果我可以像“我已经完成绑定”方法一样挂钩并使用属性调用 Factory 方法,那么覆盖 BindProperty 的答案将起作用。

我想我真的应该看看 DefaultModelBinder 的实现,别再傻了。

0 投票
1 回答
578 浏览

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 ?

编辑:

这是它的完成方式 -

0 投票
4 回答
994 浏览

asp.net-mvc - ASP.NET MVC:将表单 POST 绑定到参数时避免紧耦合

假设我有一个类似的界面:

在 ASP.NET MVC 中,我有一个表单可以发布到这样的控制器操作:

SimpleThing是一个具体的类,几乎没有实现IThing 。

但是,我希望我的所有方法都可以处理接口。我有一个使用 NIBerate 和它自己的IThing实现的数据程序集(我们称之为RealThing)。我无法将 SimpleThing 传递给它,因为它会抱怨“未知实体”。

有没有人对更清洁的方法有任何想法?我正在考虑使用工厂类的方法。但是我如何让 MVC 表单绑定器使用它呢?

谢谢!

0 投票
1 回答
2777 浏览

asp.net-mvc - 如何使用 Moq 对自定义 ModelBinder 进行单元测试?

我在编写一些单元测试来测试我创建的自定义 ModelBinder 时遇到了一些困难。我尝试进行单元测试的 ModelBinder 是我在此处发布的 JsonDictionaryModelBinder 。

我遇到的问题是使用 Moq 进行模拟所有设置。由于 HttpContextBase 未正确模拟,我不断收到 Null 异常。我认为。

有人可以帮我弄清楚我做错了什么吗?

这是我正在尝试编写但不起作用的单元测试示例:

这是上面使用的“FakeHttpContext”方法:

0 投票
1 回答
671 浏览

asp.net-mvc - ASP.NET MVC:从没有 ModelState 错误的空白字符串绑定数字类型

我有一个相当复杂的 ViewModel 包含decimal属性,这些属性以文本框的形式向用户公开。我想要一个没有值的文本框被解释为零。(底层域对象中的属性不可为空,默认值为 0。)

DefaultModelBinder将视图数据绑定到 ViewModel 时,输入的空白​​字符串的十进制属性被初始化为零(在 .NET 中是标准的),但是DefaultModelBinder会在空白文本框的 ModelState 中添加错误。结果,ModelState 无效,用户看到一大堆“需要 A 值”。他们留空的文本框的错误。

如何阻止这些错误被添加到 ModelState?