问题标签 [defaultmodelbinder]

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

c# - Fluentvalidation 与自定义索引集合

最近我一直在研究一个相当复杂的 UI,在其中我不得不调整默认集合绑定以使用基于 1 的集合而不是基于 0 的集合,当使用 Html.InputFor() 时,最终输入如下:

最初,这不适用于 MVC 的模型绑定器默认工作的方式,但我遇到了 Phil Haack 的这篇文章,详细介绍了如何使用模型绑定器绑定到集合的任何内容。http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/ 这使我在 UI 中所做的事情变得微不足道,但是现在当我尝试使用流利的验证进行验证时fluent 验证返回(正确)错误消息的名称是 index - 1。例如,如果在上面的示例中 Option1 是必需的并且我将其留空,则 fluent 验证返回名称:

我正在使用以下流畅的验证代码验证我的收藏:

我想知道的是,如果我搞砸了并且必须重写 UI,或者是否有某种方法可以强制 fluentvalidation 给我的名称与 UI 中的名称相匹配。我正在使用 fluentvalidation 6.4 版

PS 我已经对此感到沮丧一段时间了,所以如果问题不是非常清楚或需要更多信息,请原谅我,如果需要,我可以编辑问题以获得更多上下文。

0 投票
0 回答
187 浏览

c# - C# DefaultModelBinder 不绑定“动态”类型的属性

在过去的 2 天里,我一直在尝试解决这个问题......
我的主要模型包含一个“动态”类型的属性,如下所示:

SubModel1 如下所示:

属性“WGTTestModel.Prop3”被传递到局部视图,如下所示:

请注意,我必须将强制转换添加到 (object),因为它不允许我传递“动态”类型。

问题:我在部分视图中对属性“SubModel1.Prop1”和“SubModel1.Prop2”设置的值在发布表单时没有绑定。

我进行的另一个测试是在我的“WGTTestModel”中将“Prop3”的类型从“动态”更改为“SubModel1”。然后,在将模型传递到局部视图时,我能够移除对对象的强制转换。这次一切都按预期工作并且值正确绑定。

DefaultModelBinder 是否无法绑定“动态”类型属性?如果是这样,是否有任何可能的解决方法?

任何帮助将不胜感激!

0 投票
1 回答
40 浏览

asp.net-mvc - 如何正确绑定部分视图而无需发送整个模型

我喜欢将我的视图的一部分分解成多个局部视图,并且我喜欢只传递局部视图感兴趣的模型部分。通常我喜欢将一个专门用于局部视图的模型作为传递到主视图的模型上的属性。

但问题是我认为这会导致 html 帮助程序无法以模型绑定器可以正确将其重新组合在一起的方式呈现,因为它在部分中没有意识到它是另一个对象的属性。

我真的很喜欢这样做,因为它使代码更加有条理,对于经验不足的程序员来说,更难在我的代码中大便,因为一切都已经非常结构化了。到目前为止,这对我来说还不是问题,因为我要么不需要从 partials 获取表单输入,要么它是通过 ajax 调用处理的。这一次我想只使用常规的 DefaultBinder 并且想知道是否有一种方法可以使这项工作而不必将整个模型发送到所有部分视图中?

例子:

主视图中有这行代码:

注册人部分如下所示:

主要模型如下所示:

这里是 RegistrantsModel 和 RegistrantModel:

0 投票
0 回答
703 浏览

asp.net-mvc - 在 ASP .NET Core 中动态添加控件

我试图按照 Darin Dimitrov 在这篇文章中的回答: How to create controls dynamic in MVC 3 based on an XML file。但是在 ASP .NET Core(特别是 ASP .NET Core 2)中没有 DefaultModelBinder,所以我必须修改自定义模型绑定器代码才能使用 ASP .NET Core。

其实我的代码是:

我实际上遇到的问题是 ModelMetadataProvider.GetMetadataForType 向我显示错误:

非静态字段、方法或属性“ModelMetadataProviderGetMetadataForType(Type)”需要引用。

那么,我该怎么做才能使model.GetType()工作?

如何获取 ControllerContext 和 modelType?

如果有人知道如何将这段代码从 ASP .NET MVC 转换为 ASP .NET Core,我会非常感谢他的帮助。

先感谢您!

0 投票
1 回答
2935 浏览

asp.net-core - .NET 核心自定义和默认绑定相结合

我正在为视图模型创建一个自定义模型绑定器,实现IModelBinder

我的视图模型中有很多属性,其中大部分不需要任何自定义绑定。与其从 中单独显式设置模型上的所有属性值,不如ModelBindingContext让框架为我绑定模型,然后我将执行任何自定义绑定:

基本上我想执行默认模型绑定,然后应用自定义绑定,类似于此SO 帖子中采用的方法,但适用于 .NET Core,而不是框架。

我认为应用默认绑定会很简单,但无法找到如何做到这一点。我相信解决方案将涉及课程ComplexTypeModelBinderComplexTypeModelBinderProvider但似乎无法找到解决方法。

我知道当 POST 请求到达我的控制器方法时我可以进行任何更改,但这似乎是错误的地方和错误的时间。

0 投票
0 回答
38 浏览

asp.net-core-mvc - 我在 stackify 中登录的发布请求出现异常,但无法找到错误原因

以下是 stackify 在仪表板上显示的异常:

错误 字符串未被识别为有效的日期时间。有一个从索引 0 开始的未知单词。 System.FormatException:该字符串未被识别为有效的 DateTime。有一个从索引 0 开始的未知单词。---> System.FormatException: null 不是 DateTime 的有效值。在 System.DateTimeParse.Parse 在 System.ComponentModel.DateTimeConverter.ConvertFrom --- 内部异常堆栈跟踪结束 --- 在 System.ComponentModel.DateTimeConverter.ConvertFrom 在 System.ComponentModel.NullableConverter.ConvertFrom 在 Microsoft.AspNetCore.Mvc.ModelBinding .Binders.SimpleTypeModelBinder.BindModelAsync

我无法理解视图模型的哪个字段导致了这样的问题。如何在本地代码中捕获此异常?

0 投票
1 回答
190 浏览

c# - GetUtcOffset 返回某些年份/日期的错误偏移量

使用上述方法会返回错误的偏移量,但是当您经过 3 月 26 日时,它会得到纠正。

似乎这已经关闭了一整周,在我的测试中,这是在 1972 年和 1973 年参考:https ://greenwichmeantime.com/info/calendars/bst-dates/

我认为这可能与这些年来 GetDaylightChanges 出错有关参考:https ://docs.microsoft.com/en-us/dotnet/api/system.timezone.getdaylightchanges?view=netframework-4.8#remarks

正如我在 1972 年或 1973 年所说的那样,开始时间是 7 天。

我该如何解决这个问题?

0 投票
1 回答
558 浏览

c# - InvalidOperationException Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexTypeModelBinder.CreateModel(ModelBindingContext bindingContext)

我正在尝试将复杂类型绑定到属性以编辑属性值并将更改保存在内存中,现在进行测试。

这是我的编辑剃刀视图。

问题子项源于位于 EditModel: PageModel 类第 #18 行中的 ClientConfig EditClient 属性。

get 工作正常,但是当我尝试发布在表单页面上所做的更改时,我得到 InvalidOperationException Could not create an instance of type 'ProjectName.Core.ClientConfig 模型绑定的复杂类型不能是抽象类型或值类型,并且必须具有无参数构造函数。或者,给“EditClient”参数一个非空的默认值。

我已经坚持了一天左右,并通过答案查看了其他堆栈问题,但我不理解所提供的答案、术语或示例。

对不起,如果我没有把我的问题说清楚,但这是我力所能及的。

任何帮助将不胜感激。

再次感谢你。

0 投票
1 回答
419 浏览

asp.net-core - 在 ASP.NET Core 中使用反射的自定义模型绑定

我有以下型号

我正在尝试实现自定义模型绑定器。如果提交的表单key与模型的属性匹配,则设置模型的属性值,否则将键和值添加到ExtraFields. 注意ExtraFields是 JObject

问题
我在设置模型的值时遇到异常

Object of type 'Microsoft.Extensions.Primitives.StringValues' cannot be converted to type 'System.String

如果可能,我想避免检查模型目标属性的类型,然后将值转换为目标类型。这应该隐式发生。

基本上,对于所有匹配的键调用 ASP.NET 的默认绑定器,并为所有剩余的键添加值ExtraFields

0 投票
0 回答
96 浏览

c# - 自定义模型绑定器以覆盖 BindProperty

早上/下午/晚上所有,

我对在模型绑定器中工作和创建自定义模型绑定器非常陌生,所以有些事情对我来说不是很清楚。

我正在尝试创建一个自定义模型绑定器,以验证/查看从 web api 调用返回的类中的每个字符串属性,以防止任何 XSS 攻击尝试。我已经实现了我认为应该是一个可行的解决方案,但我不确定我是否错过了一个步骤或尝试了一些不可行的东西。

我的自定义模型绑定器如下所示,我删除了 xss 验证内容,因为该代码没有问题。

在我的 global.asax 中,我将默认活页夹设置如下:

我是否错过了设置此自定义模型绑定器的步骤?

我已经进行了测试以检查 xss 验证工作是否已完成,但对端点的 http POST 调用不会拒绝该调用,并正常继续。不确定是否可行,但我尝试过设置断点,但它们从未被击中。我知道 XSS 的东西在我创建了一个自定义属性时起作用,但我正在研究这种方法以避免必须在 web api 调用所需的每个类/模型中的每个属性上放置一个自定义属性。

欢迎您指出任何指示或遗漏的步骤。

干杯