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

c# - 属性的自定义模型绑定器

我有以下控制器操作:

哪里MyModel看起来像这样:

所以 DefaultModelBinder 应该毫无问题地绑定它。唯一的事情是我想使用特殊/自定义活页夹进行绑定PropertyB,并且我还想重用这个活页夹。所以我认为解决方案是在 PropertyB 之前放置一个 ModelBinder 属性,这当然不起作用(属性上不允许有 ModelBinder 属性)。我看到两个解决方案:

  1. 要在每个属性而不是整个模型上使用动作参数(我不喜欢它,因为模型有很多属性),如下所示:

    /li>
  2. 要创建一个新类型,让我们说MyCustomType: List<int>并为此类型注册模型绑定器(这是一个选项)

  3. 也许要为 MyModel 创建一个活页夹,覆盖BindProperty,如果该属性是"PropertyB"用我的自定义活页夹绑定该属性。这可能吗?

还有其他解决方案吗?

0 投票
2 回答
16119 浏览

asp.net-mvc - ASP.NET MVC2 - 自定义模型绑定示例

我试图找到一些为我需要处理的独特绑定场景构建自定义模型绑定器的示例,但我发现的所有文章都是针对 MVC 的旧版本的,它们在 MVC2 中不再相关。我一直在参考 DefaultModelBinder 源代码,试图大致了解我需要做什么,但它比我的场景更复杂,而且我在隔离我需要实现的特定逻辑时遇到了麻烦。

我的目标是收集 Checkbox/Textbox 对的集合,对于所有 Checked 对,我想为 Checkbox 的值和关联的 Textbox 的值创建一个键/值对。聚合这些数据后,我需要对集​​合进行一些字符串序列化,以便将其存储在所需模型类型的字符串属性中。我已经以可管理的格式从表单发送数据,这将允许我将给定的复选框与特定的文本框相关联,这只是弄清楚如何在我需要的地方获取所有部分的问题。

有谁知道一些可以让我开始构建自定义模型绑定器的最新教程?

0 投票
1 回答
712 浏览

asp.net-mvc-2 - ASP.NET MVC2 - 解析模型绑定器中的参数属性

给定如下动作:

有什么方法可以解决ModelBinder中的value's实例?CustomAttribute我正在查看 MVC 源代码,很可能我做错了,但是当我尝试复制他们为复杂模型检索 BindAttribute 的代码时,调用 GetAttributes() 并没有返回我正在寻找的属性。

DefaultModelBinder

0 投票
1 回答
7979 浏览

asp.net-mvc - ASP.NET MVC - 能够处理数组的自定义模型绑定器

我需要实现一个功能,允许用户以任何形式输入价格,即允许 10 美元、10 美元、10 美元……作为输入。

我想通过为 Price 类实现一个自定义模型绑定器来解决这个问题。

表单包含一个数组或价格作为键

ViewModel 包含一个价格属性:

只要用户在 Value 输入中输入可转换为十进制的字符串,默认模型绑定器就可以很好地工作。我想允许像“100 USD”这样的输入。

到目前为止,我的价格类型的 ModelBinder:

如何实现正确处理数组的自定义模型 Binder?

0 投票
4 回答
36909 浏览

asp.net-mvc - Asp.net MVC 中的自定义 DateTime 模型绑定器

我想为DateTime类型编写自己的模型活页夹。首先,我想编写一个可以附加到模型属性的新属性,例如:

这是简单的部分。但是活页夹部分要困难一些。我想为 type 添加一个新的模型绑定器DateTime。我可以

  • 实现IModelBinder接口并编写自己的BindModel()方法
  • 继承DefaultModelBinder和覆盖BindModel()方法

我的模型具有如上所示的属性 ( Birth)。因此,当模型尝试将请求数据绑定到此属性时,我的模型绑定器BindModel(controllerContext, bindingContext)会被调用。一切都好,但是。如何从控制器/bindingContext 获取属性属性,以正确解析我的日期?我怎样才能到达PropertyDesciptor物业Birth

编辑

由于关注点分离,我的模型类是在不(也不应该)引用 System.Web.MVC 程序集的程序集中定义的。设置自定义绑定(类似于Scott Hanselman 的示例)属性在这里是不行的。

0 投票
2 回答
891 浏览

asp.net-mvc - ActionFilter 中的模型可用性

我为我正在创建的 ASP.NET MVC 应用程序创建了一个新的 ActionFilter。我有一个接受 Http Post 的操作,并且操作方法的参数接受一个对象,我为此创建并注册了一个自定义模型绑定器。

我注意到,尽管看起来模型绑定器总是在动作过滤器方法之前调用,但IActionFilter.OnActionExecuting在值的内部filterContext.Controller.ViewData.Model始终是。与此相反,在同一操作过滤器的方法内部,其值不为空。nullOnActionExecutingIActionFilter.OnActionExecutedfilterContext.Controller.ViewData.Model

你们知道这是设计使然还是错误?如果设计是他们的任何链接来描述这是为什么?谢谢。

0 投票
1 回答
527 浏览

c# - 模型绑定自定义类型

我有一个结构很像 System.Nullable 类型:

我正在尝试将它与 ASP.NET MVC 绑定一起使用。使用默认的客户模型绑定器,该属性将始终产生空值。我可以通过在每个表单输入名称的末尾添加“.Value”来解决这个问题,但我只是希望它直接使用某种自定义模型绑定器绑定到新类型,但我尝试过的所有解决方案似乎都不必要地复杂. 我觉得我应该能够扩展默认绑定器,并使用几行代码使用隐式转换将属性绑定重定向到整个模型。我不太了解默认绑定器的绑定范例,但它似乎真的停留在模型和模型属性之间的这种区别上。最简单的方法是什么?谢谢!

0 投票
3 回答
3582 浏览

asp.net-mvc - 如何在 ASP.NET MVC 2+ 中将 DI / IoC 容器与模型绑定器一起使用?

假设我有一个用户实体,我想在构造函数中将它的 CreationTime 属性设置为 DateTime.Now。但是作为单元测试采用者,我不想直接访问 DateTime.Now 而是使用 ITimeProvider :

我在我的 ASP.NET MVC 2.0 应用程序中使用 NInject 2。我有一个 UserController 和两个 Create 方法(一个用于 GET,一个用于 POST)。GET 的一个是直截了当的,但 POST 的一个不是那么直截了当,也不是那么直截了当:P 因为我需要弄乱模型绑定器来告诉它获取 ITimeProvider 实现的引用以便能够构造一个用户实例。

我还希望能够保留默认模型绑定器的所有功能。

有没有机会解决这个简单/优雅/等等?:D

0 投票
1 回答
1545 浏览

asp.net-mvc-2 - DataAnnotations 验证和自定义模型绑定器

我有一个接受以下模型的操作方法 - LanguagesViewModel:

我还有一个自定义模型绑定器,用于将 POST 数据绑定到IEnumerable<LanguageItem>.

问题是如何让 DataAnnotations 验证工作?

0 投票
1 回答
1559 浏览

asp.net-mvc-2 - 我可以在 Global.asax 以外的地方注册自定义模型绑定器吗?

将自定义模型绑定器的范围限制为仅用于特定控制器操作方法或其整个控制器会很方便。Hanselman写了一个句子,暗示了自定义模型绑定器注册的替代位置,但似乎从未完成这个想法:

您可以通过在 Global.asax 中注册此自定义模型绑定器来负责您的所有日期时间

是否可以在控制器系统的较小范围内进行这些注册?如果是这样,是否有任何理由避免在 Global.asax MvcApplication 之外这样做(例如,性能原因)?