问题标签 [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 投票
1 回答
1390 浏览

asp.net-mvc - Nhibernate、MVC 和 ModelBinders

我想用 Nhibernate 配置我的模型绑定器:

所以我有:

我有一个标记控制器操作的属性,以便它们使用正确的模型绑定器,即

这工作正常,我的 GigModelBinder 注入了正确的 VenueManger 和 ArtistManager

但是,如果在应用程序开始我添加:

并在控制器动作中使用:

例如:

VenueManger 和 ArtistManager 尚未注入 GigModelBinder。

任何想法我做错了什么?

0 投票
4 回答
1493 浏览

asp.net-mvc - ASPNET MVC 中的模型绑定数据库实体

我很难想出最好的方法是在控制器操作中重新创建数据库对象。

我想使用 ModelBinders,因此在我的操作中,我可以通过参数访问对象,而不必重复代码以根据标识符参数从数据库中获取对象。所以我正在考虑有一个 ModelBinder 执行对数据访问层的调用以获取原始对象(或者如果它在数据库中不存在则创建一个新对象),然后将任何属性绑定到数据库对象以更新它。但是我读到 ModelBinders 不应该进行数据库查询(本文的第一条评论)。

如果 ModelBinder 不应该执行数据库查询(所以只使用 DefaultModelBinder),那么具有其他 db 对象属性的数据库对象呢?这些永远不会被分配。

在用户编辑对象后保存对象(视图中可编辑 1 或 2 个属性)ModelBinded 对象将丢失数据,因此按原样保存会导致数据库中的数据被无效值覆盖,或者不是 - NULL 约束失败。

那么,从与从视图回发的表单数据绑定的数据库中获取控制器操作中的对象的最佳方法是什么?

注意我使用 NHibernate。

0 投票
4 回答
854 浏览

asp.net-mvc - 哪种模型绑定方法在 ASP.NET MVC 中具有最佳的单元测试语义?

定义

在 ASP.NET MVC 中,有两种方法可以在操作中进行模型绑定。我们将这些称为“绑定参数方式”和“UpdateModel 方式”。他们都做几乎完全相同的事情,而且他们以几乎完全相同的方式做这件事:

正如我所说,这些几乎完全相同。第一个可能更具可读性,但我可以克服它。

两种测试方法

我认为,重要的区别在于您如何对它们进行单元测试:

第一种方法使用强静态类型构建模型。第二个使用名称/值对构造提交的用户数据。我发现第一种方法更容易阅读,但第二种方法更接近于网站调用控制器时实际发生的情况。

出于这个问题范围之外的原因,我从来没有说服人们应该使用 lambda 表达式而不是字符串来构建 aspx 页面来进行模型绑定。我很乐意与您讨论,但我们不要在这里讨论。出于这个问题的目的,让我们理所当然地认为我将使用内置的 HtmlHelper 方法,这些方法采用字符串而不是采用 lambda 表达式的扩展。因此,第二种方法使用名称/值对作为针对 aspx 页面的“动态”性质的非正式测试具有一定的价值。当然,它不能取代针对站点的集成测试。

问题(终于!)

我看到了这两种方法的优点和缺点。我的问题是,是否有一个非常有力的论据支持我缺少的一种方法?

编辑我正在寻找客观的答案。我正在寻找为什么一种方法比另一种更好的非显而易见的原因,而不是试图进行民意调查。

0 投票
1 回答
778 浏览

.net - 白名单模型绑定似乎不适用于复杂的属性

我有一个如下所示的 POST 操作:

我正在使用默认模型绑定器,并且凭据是我的 User 对象上的一个属性。凭据有两个字段(电子邮件地址和密码)。如果我删除白名单,凭据对象会被绑定并且一切都按预期工作。但是,如果我提供该白名单,用户角色会被绑定,但复杂属性上的电子邮件和密码不会。我检查了表单值,当我列出它们并且它们与我的对象匹配时,它们很关心。

我错过了什么吗?

0 投票
2 回答
228 浏览

asp.net-mvc - .Net mvc 活页夹

我对 Microsoft 的 mvc 框架中的模型绑定器存在分歧。我的域模型有一个基类,它有一个只读的 id 属性和类型 guid。但是因为它是只读的,所以活页夹不能设置属性的值。那么我完全搞砸了还是有人可以解决我的问题?

编辑:很抱歉,我忘了提及其他信息,我希望活页夹绑定 id 属性的唯一时间是当它是另一个模型对象的相关对象时。就像在这种情况下,当我为帖子选择了一个类别并且我只想要 ORM 的 id 时。

0 投票
2 回答
943 浏览

c# - ASP.NET MVC 中绑定对象的可选属性

我正在尝试构建一个“新客户”表单,因此我使用默认模型绑定器来构建我的客户对象:

唯一的问题是我在 Customer 对象上有一些不需要的属性。当我将这些字段留空时,ASP.NET MVC 会自动抛出模型错误,说明“需要一个值”。

我如何向框架表明这些属性是可选的?

0 投票
5 回答
4132 浏览

asp.net-mvc - ASP.NET MVC UpdateModel 空属性

给定以下模型,

看法,

和控制器

我的 b 实例将包含 A 的属性,其中 Name 为空字符串。

如果没有为 name 输入值,是否有 UpdateModel 将 A 属性设置为 null ?

澄清一下,这是一个简单的案例,我的真实世界场景包含具有数百个此类属性的数据模型。这些数据模型的定义不在我的掌控之中。因此,我需要一个针对一般情况的解决方案,即如果没有输入任何值,则不要创建属性。

进一步说明:我也需要它在编辑场景中工作,即编辑 A.Name 设置为“foo”的 b 实例以将 A.Name 设置为“”,我希望 A 为空。

0 投票
1 回答
345 浏览

asp.net-mvc - 注册模型绑定器

我刚刚从 beta 产品更新到 RC1 MVC。

我的 Application_start 中有以下代码(在 global.ascx 中)

这导致以下异常....

找不到方法:System.Collections.Generic.IDictionary`2 System.Web.Mvc.ModelBinders.get_Binders()'。

0 投票
2 回答
1812 浏览

asp.net-mvc - 模型绑定器中的模型绑定

首先,请容忍我在这里。我有一个自定义模型绑定器,它成功地将表单数据映射到自定义对象。在此模型绑定器中,它还将表单项映射到不同的自定义对象。我觉得我应该能够做的是创建一个单独的模型绑定器来处理第二个映射。这是一个简化版本。

自定义对象:

如果我的表单为 SubCategories 传回了一堆 Id,我需要做的是运行到数据存储库并水合 SubCategory 对象。从表格中,将按以下格式提交子类别列表:

编写自定义来映射类别显然很简单,但编写模型绑定器将依次映射子类别(在模型绑定器中,我会运行查询我的数据存储库)证明有点困难。

我不确定我说得有多清楚,抱歉,感谢您的阅读,如果有什么我可以说的让我更清楚,请告诉我!

0 投票
2 回答
652 浏览

asp.net-mvc - 拦截 MVC 控制器的动作方法

我使用 O/R 映射器,它可以以通用方式从数据库中重新加载对象。我希望能够在创建映射对象立即拦截请求,以便重新加载它们。

ActionFilters 当然存在,但问题是 ActionFilters(或我见过的示例)可以处理表单提供的数据,而不是在创建对象之后。

我查看了控制器的可覆盖方法,但没有发现任何明显的吸引我的眼球。有谁知道这样做的方法?

谢谢你的建议!

纳赛尔