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

asp.net-mvc - 自定义 DecimalModelBinder 和 IValidatableObject.Validate 之间的集成

我正在使用 MVC 自定义验证服务器端,因为我必须使用几个自定义属性。我想实现接口 ValidatableObject 因为我认为它比编写几个自定义属性更简单。

为了强制 ValidationContext 我必须使用自定义模型绑定器,并且我已经按照 David Haney 在他的文章 Trigger IValidatableObject.Validate When ModelState.IsValid 中的说明进行操作。

所以我输入了 global.asax

然后在课堂上

它工作得很好......但是问题来了......我还要在这个活页夹中添加一个特定的行为,以防双倍和双倍?键入以验证这种格式的数字 1.000.000,000 所以我正在查看 Reilly 和 Haack 的这些资源 https://gist.github.com/johnnyreilly/5135647

然后正如Haney在评论中所建议的那样,我以这种方式用 global.asax 中的 CustomModelBinder 替换了默认的 DecimalModelBinder

但我不明白为什么.. CustomDecimalModelBinder 没有触发......所以目前我的工作是在 global.asax 中注释上面的 4 行并在自定义 ModelBinder 类中添加 BindModel 的覆盖一种接受双重和双重的方式?在 IT 文化中

通过这种方式,带有我的 customValidation 的 ValidationContext 工作,我还设法以自定义方式验证双重类型

欢迎任何更好的想法!

0 投票
2 回答
1023 浏览

asp.net-mvc - KendoUI 网格不会触发 saveChanges 事件(System.MissingMethodException:无法创建接口的实例。)

KendoUI 网格不会触发 SaveChanges 事件。当我运行项目并单击 SaveChanges 按钮但 SaveChanges 事件没有触发时,我在 Visual Studio 2013 和浏览器(FF、IE、Chrome)的环境中没有看到任何问题。为了进一步调查,我使用了 Chrome 的调试器,我发现了一个问题。请查看问题、错误日志和代码的图片。(我用过 JQuery v1.10)请帮我解决它。

编辑:

我知道错误与[Bind(Prefix = "models")]. 当我删除它时, Editing_Update动作被触发但articles对象为空。我该如何解决?

问题的第一张图片

问题的第二张图片

我的控制器的一部分:

根据上面的代码,当我点击 SaveChanges 按钮时,Editing_Update 必须被触发但没有发生!

我的网格:

我的视图模型:

0 投票
2 回答
2964 浏览

c# - ValueProviderResult 的 AttemptedValue 返回错误值

我在我的项目中使用了 ASP.NET MVC5,并在其中使用了自定义模型绑定。当我在我的模型中获取 IsActive 属性的值时,我遇到了一个问题。IsActive 值必须是“true”或“false”但我得到“true,false” 我怎样才能获得正确的值?

ValueProviderResult 的 AttemptedValue 返回错误值

我的观点总结:

0 投票
1 回答
1790 浏览

c# - 具有多态对象集合的复杂模型的自定义模型绑定器

如何为具有多态对象集合的复杂模型编写自定义模型绑定器?

我有下一个模型结构:

如果我想将 CustomAttributeValueViewModel 绑定到它的一些继承者,我使用这样的自定义模型绑定器:

它工作得很好。但是现在我想将这些模型绑定为另一个模型的集合项。例如:

我怎样才能做到这一点?

编辑:

我想绑定从客户那里收到的发布数据。为了更清楚,这是我的 POST HTTP 请求的示例:

我在我的行动中收到了这些数据:

我想写这样的活页夹来收集继承者。

0 投票
1 回答
78 浏览

c# - ASP.NET:Modelbinder 仅委托

我面临一个自定义模型绑定器的问题。

我有两个由 EditorTemplates 显示的模型(继承自基类)。

基类:

模型类 1:

模型类 2:

为了让它绑定,我实现了一个自定义模型绑定器:

总而言之,它工作得很好,但是模型的值 fpr 属性(QuestionId 和 Rating/Freetext)没有设置?谁能告诉我为什么?我究竟做错了什么?

我也试过打电话

但结果是一样的。正确实例化对象但未设置属性。


更新:

我现在尝试只覆盖 DefaultBinder 的 CreateModel-Methode,就像在这篇文章MVC 3 Model Binding a Sub Type (Abstract Class or Interface)中一样。

该模型仍然正确实例化。现在的问题是,只设置了基类的属性。

0 投票
2 回答
255 浏览

asp.net-mvc - 如何确定自定义模型绑定器中可选参数的默认值?

我有一个像这样的动作方法:

和一个处理整数值的自定义模型绑定器,这样我就可以像这样调用它:

我的模型绑定器在该BindModel方法中执行以下操作:

这很好用。但是,当参数为可选时,我不知道如何处理这种情况。我可以检查该参数是否未设置,但是我想返回默认值,但我看不到如何在我的模型活页夹中确定它。换句话说,我如何才能看到默认值为True,如果没有为MyBoolean属性指定值,则返回该值?

0 投票
3 回答
2166 浏览

c# - 如何在 Asp.Net MVC 4 中的多态模型中绑定复杂属性?

我需要创建一个基于派生类型的动态输入表单,但是当传递给控制器​​的 POST 方法时,我无法正确绑定复杂的属性。其他属性绑定很好。这是我所拥有的一个人为的例子:

模型

自定义模型绑定器

活页夹基于这个答案:多态模型绑定

控制器

查看摘录

JavaScript

该表单是使用$.ajaxusing发布data: $(this).serialize()的,如果我调试它会显示正确的填充表单数据。

所有属性都填充在模型中,不包括SomeType. 我需要改变什么来填充它们?

谢谢

0 投票
0 回答
568 浏览

asp.net-mvc - 更新自定义模型绑定器中的模型值

我有一个自定义模型绑定器,它为我的模型添加了一些属性。

向它添加属性时一切正常,但是我要更新任何现有属性,似乎那些被忽略了。

我的代码如下:

控制器

模型粘合剂

请注意代码上的注释,为简洁起见已对其进行了修改。总之,提交表单时最初未设置的任何内容都可以毫无问题地更新。最初设置的任何内容都不会更新。

谢谢

0 投票
2 回答
308 浏览

asp.net-mvc-3 - 使用来自不同组件的自定义模型绑定器并从相同组件实例化对象

我有一个类库,其中包含一个自定义 MVC 模型绑定器,用于实例化从抽象类派生的各种具体类型。模型绑定器与本文中描述的几乎相同。

在包含用于测试的 MVC Web 应用程序的同一 Visual Studio 解决方案中使用它时,它可以正常工作。

我的问题是,从程序集创建了一个 nuget 包并将其包含在一个完全独立的 MVC 应用程序中,模型绑定器不再工作,尽管已在 Global.asax.cs 中正确配置它。

在拉了一些头发之后,我直接在单独的 MVC 应用程序中重新创建了模型活页夹,并且当我这样做时,我注意到CreateModel()活页夹中的覆盖方法受到保护。它现在被执行,我怀疑受保护的关键字与它有关,但我想有人解释一下究竟是为什么。

即使使用“本地”模型绑定器,也存在更多问题。当它执行并尝试实例化具体对象时,我得到一个异常Could not load type XXXX from assembly { separate MVC project assembly name},因此模型绑定器似乎无法从其自己的程序集外部加载类型。

谁能给我更多关于为什么会发生这种情况以及我可以做些什么来解决它的信息?请记住,我需要模型绑定器和模型驻留在类库中而不是 MVC 程序集中。

0 投票
1 回答
1410 浏览

c# - Web API 中基类的自定义模型绑定器

给定以下模型

中的值RequestBase是通过标头发送的,因此我正在尝试实现自定义模型绑定器以将它们绑定到模型

这是我到目前为止所拥有的

它目前不工作,因为它bindingContext.Model是空的