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

asp.net-mvc-3 - 如何让 MVC 模型绑定器仅绑定列表的非 Null 值?

在这个问题之后,我想知道是否有办法让 MVC 模型绑定器只将元素绑定到一个列表,如果有一个值来填充它们。例如,如果有一个包含三个同名输入且未输入一个值的表单,我该如何停止 MVC 绑定一个包含 3 个元素的列表,其中一个为空?

0 投票
3 回答
904 浏览

asp.net-mvc-3 - 默认模型绑定器不绑定到字段是否有原因?

我正在使用 ASP.NET MVC3,我想知道默认的模型绑定器绑定到公共属性而不是公共字段。

通常我只是用属性定义模型类,但有时我使用一些包含一些字段的预定义类。每次我必须调试并记住模型绑定器只是不喜欢字段。

问题:背后的原因是什么?

0 投票
6 回答
13594 浏览

asp.net-mvc-3 - MVC3 非顺序索引和 DefaultModelBinder

MVC 3.0 中的默认模型绑定器是否能够处理非顺序索引(对于简单和复杂模型类型)?我遇到过建议应该这样做的帖子,但是在我的测试中似乎没有。

给定回发值:

还有一个控制器方法:

加载的唯一值是项目 0 和 1;第 4 项被简单地忽略。

我见过许多生成自定义索引的解决方案(模型绑定到列表),但是它们似乎都针对以前版本的 MVC,而且大多数都是有点“笨拙”的 IMO。

我错过了什么吗?

0 投票
1 回答
694 浏览

asp.net-mvc-3 - MVC3表单使用列表参数将单个输入提交给Action

我有一个第三方控件,它利用单个隐藏输入字段来存储整数列表。该控件在整个站点中以多种形式使用。

提交的值(在 Fiddler 中显示)为:

控制器动作如下所示:

正如预期的那样,DefaultModelBinder 无法解析整数列表。鉴于我确实能够更改输入值的格式,是否有一种格式可以使默认模型绑定器为我解析它?

我可以轻松地将操作更改为具有字符串参数并自己处理解析,但是我希望模型绑定器为我执行此操作。我还可以拦截表单提交并将数据/数据类型刮取/更改为 JSON(或其他格式),但是我真的很想避免这种方法。另一种选择是创建一个自定义模型绑定器,但这似乎有点矫枉过正。

建议?

0 投票
1 回答
5069 浏览

asp.net-mvc - 在将模型值传递给 DefaultModelBinder.BindModel 之前对其进行操作

我的视图模型中的一些decimaldecimal?属性被标记为“百分比”数据类型,以及其他数据注释,例如:

我想允许用户在输入数据的方式上有一些灵活性,即有或没有百分号、中间空格等。但我仍然想使用该DefaultModelBinder行为来获得其所有功能,例如检查RangeAttribute和添加适当的验证消息。

有没有办法解析和更改模型值,然后将其传递?这是我正在尝试的,但我遇到了运行时异常。(忽略实际的解析逻辑;这不是它的最终形式。我现在只对模型替换问题感兴趣。)

0 投票
2 回答
17935 浏览

asp.net-mvc - 将属性包含和排除属性与复杂类型的嵌套对象

好吧,这很奇怪。我不能在 ASP.NET MVC 上使用具有复杂类型嵌套对象BindAttribute的 'sInclude和属性。Exclude

这是我所做的:

模型:

HTTP POST 操作:

看法:

根本不起作用。如果我按照此处所述定义BindAttributeforEnquiry类,我只能使这项工作:

如何在复杂的嵌套对象上使用 [Bind(Include="")] 属性?

0 投票
1 回答
1019 浏览

c# - DefaultModelBinder 不绑定模型(始终为 null),即使 ModelState 包含所有必需的值

我正在使用示例 ASP.NET MVC 3 应用程序。我正在为我正在处理的项目的 API 进行概念验证,方法是使用HttpWebRequests. 我以 JSON 格式提交数据,并使用内容类型“application/json”。

这是我的方法:

问题是,即使ModelState包含我希望看到的所有键和值(例如 Dictionary 包含 { "UserName"="username", "Password"="password", "RememberMe"=true } 这是三个属性LogOnModel 类),model每次我调用该方法时,该对象都是空的。

使用“application/x-www-form-urlencoded”时我没有这个问题。我也尝试过添加添加

到我的Application_Start方法。

这是我用来向上述方法发送请求的代码:

0 投票
1 回答
2747 浏览

asp.net-mvc-3 - Custom Model Binder to bind nested property values

The reason I need this: In one of my controllers I want to bind all Decimal values in a different way than the rest of my application. I do not want to register a Model Binder in Global.asax (via ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());)

I have tried deriving from the DefaultModelBinder class and override its BindProperty method, but that only works for the model instance's immediate (not nested) Decimal properties.

I have the following example to demonstrate my problem:

This solution only sets the Model's Decimal property to 999, but doesn't do anything to DecimalContainer's DecimalNested property. I realize this is because base.BindProperty is called in my DecimalModelBinder's BindProperty override, but I don't know how to convince the base class to use my Model Binder when dealing with decimal properties.

0 投票
3 回答
6387 浏览

asp.net-mvc - 嵌套对象上的 ASP.NET MVC 3 验证未按预期工作 - 验证子对象两次而不是父对象

我正在尝试让 ASP.NET MVC 3 从复杂的嵌套对象生成表单。我发现有一种验证行为是出乎意料的,我不确定这是否是 DefaultModelBinder 中的错误。

如果我有两个对象,让我们将“父”称为“OuterObject”,它具有“InnerObject”(子)类型的属性:

这是内部对象:

您会注意到我对两者都进行了验证.. 只是一些虚拟验证说某些值不能等于“测试”。

这是将在 (Index.cshtml) 中显示的视图:

..最后是 HomeController:

您会发现,当模型通过 DefaultModelBinder 验证时,“InnerObject”中的“Validate”方法会被命中两次,但“OuterObject”中的“Validate”方法根本不会被命中。

如果你从“InnerObject”中取出 IValidatableObject,那么“OuterObject”上的那个就会被击中。

这是一个错误,还是我应该期望它以这种方式工作?如果我应该期望它,最好的解决方法是什么?

0 投票
0 回答
383 浏览

c# - 没有从 DefaultModelBinder.ResourceClassKey 获取资源文件

在我的 MVC3 项目中,在 Global.Application_Start() 中,我有

我在 App_GlobalResources 中也有 2 个资源文件:

为什么根本没有使用法国资源?

(它从 DefaultModelBinder.resx 中获取正确的值。)