问题标签 [custom-model-binder]

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 回答
3150 浏览

c# - 在 IValidatableObject 上设置 ValidationContext 的 Items 集合?

我有一个派生自 IValidateableObject 的视图模型类,并且我正在使用带有 ValidationContext 的 Validate 方法从我的控制器中对其进行评估。

我希望能够针对 ObjectInstance 中的视图模型类本身的属性进行测试。我可能可以将这些东西添加到模型中,然后一切都会变得容易,但我不觉得这些东西真的属于视图模型类,因为它们更多的是关于该对象的当前状态。

我想知道 ValidationContext 中的 Items 集合是否是存储此类内容的合适位置...唯一的问题是我似乎无法找到解释如何将内容添加到该字典的资源。

那有意义吗?任何人都可以在检查对象的 ModelState 之前解释如何填充 ValidationContext.Items 吗?

更新 #1 - 我在一篇关于 EF CTP5 () 的旧博客条目中找到了以下内容,但我不确定如何使用这些信息:

因此可以使用自定义验证逻辑,完全替代内置验证或过滤掉一些内置验证返回的验证错误。关于 DbContext.ValidateEntity( http://blogs.msdn.com/b/adonet/archive/2010/12/15/ef-feature-ctp5-validation.aspx ) 方法的一个小细节是该方法的第二个参数看起来像这样:

IDictionary<object, object> items

默认情况下,它的值始终为 null。然而,重写 DbContext.ValidateEntity() 允许通过调用将非空值传递给此方法:

return base.ValidateEntity(entityEntry, myItems);

更新#2 - 我试图走下使用自定义模型绑定器的道路,但我也遇到了困难 - 似乎没有办法简单地将项目添加到 ValidationContext 然后调用基础。 OnModelUpdated(controllerContext, bindingContext) 方法。

0 投票
1 回答
255 浏览

asp.net - 是否可以从 MVC 自定义模型绑定器中获取显示名称?

我有这个代码:

modelName 返回属性名称,但我需要访问 DisplayName,而不是属性名称,例如“First Name”而不是“FirstName”。这可能来自控制器上下文或绑定上下文吗?我在手表里找不到任何东西。

0 投票
4 回答
428 浏览

asp.net-mvc-3 - MVC 3 自定义模型绑定到平面形式变量结构

当请求包含表单变量的平面集合时,我很难让自定义模型绑定器工作。

我有一个包含嵌套 ViewModel 的 ViewModel 类,例如

我的问题是,如果我使用 Fiddler 提交带有 NestedType.Name 表单变量的请求,那么我的自定义模型绑定器执行得很好,但是,我必须处理的请求是我无法控制的,在这种情况下,它是通过来自 JQGrid 实例的 ajax 请求发布的,并且是“扁平的”,即

不是

有什么办法可以让它工作吗?

提前致谢。

编辑:

为了澄清一点,我的控制器操作如下所示:

如下所述,我宁愿在执行控制器代码之前触发自定义绑定器,而不是调用 TryUpdateModel()。

0 投票
2 回答
74 浏览

python - 让 django 在我的自定义模型中查找数据

我是 django 的新手,我尝试的概念非常简单。我创建了自定义模型(我不想扩展任何预定义模型)。并使用此代码尝试验证我的登录名:

Models.py :(我在这里只给出了示例数据。这不是我使用的真实数据。我的客户希望我使用任何内置模型,如 AbstractBaseUser 等,)


视图.py

我的问题很简单。我想通过身份验证查看我的自定义模型(登录数据)而不是默认模型。我怎么做 ??

0 投票
1 回答
5444 浏览

asp.net-mvc - 不区分大小写的模型绑定 MVC 4

我希望我的模型绑定不区分大小写。

我尝试操作从 继承的自定义模型绑定器System.web.Mvc.DefaultModelBinder,但我不知道在哪里添加不区分大小写。

我也看了看IValueProvider,但我不想重新发明轮子并自己找到价值观。

任何想法 ?

0 投票
1 回答
171 浏览

model-view-controller - 在自定义模型绑定中应该覆盖哪些方法或属性?

我有一个需要两个功能的 MVC 应用程序的自定义绑定方案

1) 一个通用的、可重用的自定义绑定器,它允许将表单/查询属性映射到类属性。

2)将给定表单/查询参数拆分为字典(或两个属性)的类特定自定义绑定器。

第一个要求是通过我通过 Google 找到的解决方案完成的(我很抱歉我无法提供链接,因为我忘记了在哪里找到它)。

本质上,有两个部分

像这样使用

第二块是

我的问题是要求#2。在这种情况下,SearchRequest 类上有一个附加属性

其中 Dictionary 的键是字段名,Dictionary 项的值是顺序(升序或降序)

使用示例

我需要绑定表单/查询值的逻辑将类似于

我知道我应该再次从 DefaultModelBinder 继承......或者在这种情况下 AliasModelBinder(它又从 DefaultModelBinder 继承)以支持 Alias,但我的问题是我不确定要覆盖哪个方法。关于重用 DefaultModelBinder 的最佳方式的信息似乎很少(即几乎没有)。

我的另一个问题涉及使用两个自定义模型绑定器的最佳方式。据我所知,没有模型绑定器链接。我有什么办法可以在没有#2 的解决方案明确了解解决方案#1 的情况下完成要求#2?需求 #2 关心获取单个值并将其拆分为字典。它真的关心 SortOrder 属性的值来自别名表单/查询参数吗?

任何帮助,将不胜感激。

谢谢你。

杰森

0 投票
0 回答
220 浏览

c# - MVC CustomModelBinder,具有相同属性名称的操作 - 已添加具有相同键的项

我创建了一个自定义模型绑定器来绑定 int,以便在字符串值大于 int.maxvalue 时进行处理 - 我们有很多使用 UpdateModel 的遗留代码,如果要转换为 int 的字符串值,此方法会引发异常大于 int.MaxValue。如果我将对 UpdateModel 的调用修改为 TryUpdateModel,则更新会正常失败并在视图中显示错误,但我想要更有意义的错误消息 - 因此需要自定义模型绑定器。模型活页夹工作正常,但是我有一个类似于以下的操作

ListCriteria 类有一个属性,如下所示

我的自定义模型绑定器实现了 IModelBinder。与相当多的示例类似,它的实现类似于以下。

调用该操作时,模型绑定器会在此行引发异常:

并且异常消息是“已添加具有相同密钥的项目”。显然这是因为 ListCriteria 对象上的 Page 属性已经被绑定,并且被添加到了字典中——当页面参数被绑定和添加时,就会抛出异常。

这应该如何实施?难道不能在对象层次结构的不同级别上拥有同名的属性吗?

在我的情况下,事实证明 Page 属性和 page 参数执行相同的功能,因此后者 cna 被删除 - 但是它可能会在其他地方抬头......

0 投票
1 回答
2665 浏览

model-binding - WebApi2:自定义参数绑定绑定部分参数

我有一个 webApi2 项目和另一个项目,其中我有我的模型类和一个 BaseModel,它是所有模型的基础,如下所示,

所有其他模型都来自我的 BaseModel。

在 webapi 我有我的 CustomerController 如下,

到达 CustomerController 的每个请求在请求标头中都有一个“UserId”标头,我需要一个 ModelBinder 或 ParameterBinder 或一些仅绑定来自请求标头的 UserId 而不会触及其他模型参数的功能。我的意思是除了 UserId 之外的模型参数默认绑定..

我不想使用 AOP 或拦截器或方面。是否可以仅将 UserId 与模型绑定器、参数绑定器等 asp.net 功能绑定。

0 投票
0 回答
2347 浏览

c# - 使用 WebAPI 将 JSON 从请求正文中获取到自定义模型绑定器中

我一直在实现一个自定义模型绑定器来处理从 datatables.net jQuery 插件返回的数据,但是在实际获取数据时遇到了麻烦,因为它正在请求正文中传回,而我ModelBindingContext似乎只有一个ValueProvider用于查询细绳。

目前我的控制器方法签名如下所示:

这是从一个简单的$.post().

我尝试向参数添加一个FromBody属性input,但这似乎完全停止了调用自定义模型绑定器。

如何让我的模型绑定器识别请求正文中的数据,或者如果不可能,我如何将发布的数据移动到查询字符串中(我不想这样做!)?

0 投票
1 回答
214 浏览

c# - 自定义模型绑定器未更新

我一直在研究一个 MVC 项目,该项目具有一个带有多个嵌套类的复杂模型,一个类中嵌套了另一个类。我可以让所有其他复杂类型正确更新,但最后一个永远不会正确更新。我已确保注册其自定义模型绑定器,该绑定器会被执行并返回一个对象,该对象具有分配给其属性的正确值,但原始模型永远不会更新。

我已经剪掉了所有有效的东西,只剩下我的结构:

课程

模型粘合剂

控制器

我无计可施。被PersonModelBinder执行并返回正确的值集,但模型永远不会更新。我在这里想念什么?