问题标签 [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.
asp.net-mvc-3 - 如何让 MVC 模型绑定器仅绑定列表的非 Null 值?
在这个问题之后,我想知道是否有办法让 MVC 模型绑定器只将元素绑定到一个列表,如果有一个值来填充它们。例如,如果有一个包含三个同名输入且未输入一个值的表单,我该如何停止 MVC 绑定一个包含 3 个元素的列表,其中一个为空?
asp.net-mvc-3 - 默认模型绑定器不绑定到字段是否有原因?
我正在使用 ASP.NET MVC3,我想知道默认的模型绑定器绑定到公共属性而不是公共字段。
通常我只是用属性定义模型类,但有时我使用一些包含一些字段的预定义类。每次我必须调试并记住模型绑定器只是不喜欢字段。
问题:背后的原因是什么?
asp.net-mvc-3 - MVC3 非顺序索引和 DefaultModelBinder
MVC 3.0 中的默认模型绑定器是否能够处理非顺序索引(对于简单和复杂模型类型)?我遇到过建议应该这样做的帖子,但是在我的测试中似乎没有。
给定回发值:
还有一个控制器方法:
加载的唯一值是项目 0 和 1;第 4 项被简单地忽略。
我见过许多生成自定义索引的解决方案(模型绑定到列表),但是它们似乎都针对以前版本的 MVC,而且大多数都是有点“笨拙”的 IMO。
我错过了什么吗?
asp.net-mvc-3 - MVC3表单使用列表参数将单个输入提交给Action
我有一个第三方控件,它利用单个隐藏输入字段来存储整数列表。该控件在整个站点中以多种形式使用。
提交的值(在 Fiddler 中显示)为:
控制器动作如下所示:
正如预期的那样,DefaultModelBinder 无法解析整数列表。鉴于我确实能够更改输入值的格式,是否有一种格式可以使默认模型绑定器为我解析它?
我可以轻松地将操作更改为具有字符串参数并自己处理解析,但是我希望模型绑定器为我执行此操作。我还可以拦截表单提交并将数据/数据类型刮取/更改为 JSON(或其他格式),但是我真的很想避免这种方法。另一种选择是创建一个自定义模型绑定器,但这似乎有点矫枉过正。
建议?
asp.net-mvc - 在将模型值传递给 DefaultModelBinder.BindModel 之前对其进行操作
我的视图模型中的一些decimal
和decimal?
属性被标记为“百分比”数据类型,以及其他数据注释,例如:
我想允许用户在输入数据的方式上有一些灵活性,即有或没有百分号、中间空格等。但我仍然想使用该DefaultModelBinder
行为来获得其所有功能,例如检查RangeAttribute
和添加适当的验证消息。
有没有办法解析和更改模型值,然后将其传递?这是我正在尝试的,但我遇到了运行时异常。(忽略实际的解析逻辑;这不是它的最终形式。我现在只对模型替换问题感兴趣。)
asp.net-mvc - 将属性包含和排除属性与复杂类型的嵌套对象
好吧,这很奇怪。我不能在 ASP.NET MVC 上使用具有复杂类型嵌套对象BindAttribute
的 'sInclude
和属性。Exclude
这是我所做的:
模型:
HTTP POST 操作:
看法:
根本不起作用。如果我按照此处所述定义BindAttribute
forEnquiry
类,我只能使这项工作:
c# - DefaultModelBinder 不绑定模型(始终为 null),即使 ModelState 包含所有必需的值
我正在使用示例 ASP.NET MVC 3 应用程序。我正在为我正在处理的项目的 API 进行概念验证,方法是使用HttpWebRequest
s. 我以 JSON 格式提交数据,并使用内容类型“application/json”。
这是我的方法:
问题是,即使ModelState
包含我希望看到的所有键和值(例如 Dictionary 包含 { "UserName"="username", "Password"="password", "RememberMe"=true } 这是三个属性LogOnModel 类),model
每次我调用该方法时,该对象都是空的。
使用“application/x-www-form-urlencoded”时我没有这个问题。我也尝试过添加和不添加
到我的Application_Start
方法。
这是我用来向上述方法发送请求的代码:
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.
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”上的那个就会被击中。
这是一个错误,还是我应该期望它以这种方式工作?如果我应该期望它,最好的解决方法是什么?
c# - 没有从 DefaultModelBinder.ResourceClassKey 获取资源文件
在我的 MVC3 项目中,在 Global.Application_Start() 中,我有
我在 App_GlobalResources 中也有 2 个资源文件:
为什么根本没有使用法国资源?
(它从 DefaultModelBinder.resx 中获取正确的值。)