问题标签 [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.
c# - ASP.NET MVC 默认绑定器:int 太长,空验证错误消息
我有以下模型类(为简单起见被剥离):
这是我使用此模型的 Razor 表单:
现在,如果我在文本框中输入非数字数据,我会收到正确的验证消息,即:“值 'qqqqq' 对于字段'IntData' 无效”。
但是如果我输入一个很长的数字序列(如 345234775637544),我会收到一个 EMPTY 验证摘要。
在我的控制器代码中,我看到这ModelState.IsValid
是false
预期的,ModelState["IntData"].Errors[0]
如下所示:
如您所见,验证工作正常,但不会向用户产生错误消息。
我可以调整默认模型绑定器的行为,以便在这种情况下显示正确的错误消息吗?还是我必须编写自定义活页夹?
asp.net-mvc-3 - MS MVC3 模型绑定对象
有人可以帮助我更好地理解 DefaultModelBinder 以及它如何处理绑定具有对象类型属性的模型吗?
我已经下载了代码并尝试跟踪它,但我仍然有点摸不着头脑。
假设我有一个这样的模型:
并假设我的表格都是正确生成的(例如:name="MyModel.MyProperty")
对于实际上将 MyProperty 设置为某些类型的实例的各种情况会发生什么?
在我的例子中,我从 DefaultModelBinder 派生了一个自定义活页夹并重写 CreateModel() 以返回一个 MyModel,并将 MyProperty 设置为正确的类型。
我注意到如果我将 MyProperty 设置为一个字符串,那么由于某种原因 DefaultModelBinder::BindProperty() 会返回一个大小为 1 的字符串 [],其中包含表单字段的内容,而不仅仅是一个字符串。为什么?
如果 MyProperty 是一些更复杂的类型,即使我的表单字段都被正确命名(例如:name="MyModel.MyProperty.FirstName"),绑定似乎根本不起作用。
以前有没有人处理过这样的复杂/抽象模型绑定场景?有没有更好的办法?(我知道这很奇怪,但我确实需要让 MyModel 的 MyProperty 成为对象,因为直到运行时我才知道它实际上是什么类型)
asp.net-mvc - MVC3 ModelBinding 到带有索引间隙回发的集合
我的模型上有一组对象,我正在使用 EditFor 函数在视图中呈现这些对象,并且我有一个 EditorTemplate 负责实际呈现每个对象。
这已经有一段时间了,当您检查 html 时,我的文本框以模型属性为前缀,然后是它们来自的集合的索引。
但是,我最近开始在集合的模型元数据中使用 ShowForEdit 和 ShowForDisplay 属性,如果 ShowForEdit 不正确,我会在编辑器模板的第一行中跳过它。
但是因为这些都在 html 中编入索引,所以当我尝试通过回发将此集合保存回视图模型时,由于依赖于索引编号而失败。当我检查它的值时,我的视图模型中缺少索引后集合中的每个项目。
在这种情况下,它实际上是我要跳过的集合中的第一个项目,因为我不希望它在编辑视图中可见,但正因为如此,当我回发时,html 中的第一个索引是 1(而不是 0就像通常那样),但是当您尝试保存更改时,这是一个问题。在使用 javascript 更改 DOM 时,这也是一个问题。
当 html 表示的集合中的一个或多个索引不存在时,是否有其他人遇到默认模型绑定器读取回发数据的问题?
有处理这个问题的模型绑定器吗?
asp.net-mvc - 如何使用(尝试)UpdateModel?
使用 (Try)UpdateModel 的正确方法是什么?
当我运行这个:
TryUpdateModel
返回真,ViewData
没有错误,- 但我
Proxy
的没有更新。
动作方法
发布数据
事物类
编辑:我也尝试过明确地传递表单集合
TryUpdateModel(Proxy, TypeName, idontknow)
编辑#2:(回应尼克拉森)
- 重新启动VS和服务器,没有变化。
- 值实际上在 FormCollection 中。
- 模拟数据有效!我知道我一定在这里搞砸了。
- 使用调试器检查值。
c# - 派生抽象类asp.net mvc的JSON自定义绑定器null
我为抽象类制作了一个自定义活页夹。绑定器决定使用哪个实现。它工作得很好,但是当我将抽象类中不存在的属性添加到子类时,它始终为空。
下面是抽象类Pet
和派生类的代码Dog
和Cat
.
控制器只接受一个Pet
参数并将其作为 JSON 返回。
如果我发送
我回来
对于Cat
,存在抽象类中不存在的寄生虫属性Pet
。如果我发送
我回来
我已经尝试过其他更复杂的类,这只是一个简单的例子。我查看了调试器,parasite
值在值提供者中,绑定器返回的模型包含寄生虫的字段。谁能看出问题出在哪里?
asp.net-mvc - MVC3 非顺序隐藏输入索引需要先出现吗?
模型绑定的 MVC3 非顺序索引隐藏输入..
他们是否在要发布的其他相关输入之前,之后,中间?
它们在发布数据中的最终位置是否重要?
例如,可以将它们全部放在一起并且仍然有效吗?
asp.net-mvc-2 - 如何使用 DefaultModelBinder 绑定模型属性 - ASP.NET MVC2
我有以下情况。
- 我的 Edit/Employee 视图填充了来自 Entity Framework 实体 (Employee) 的模型
- 我从 Edit/Employee 发布到 Save/Employee 控制器操作。Save/Employee 操作需要另一种类型 (EmployeeSave),它具有 Employee 作为属性
这是编辑/员工方法
这是保存/员工方法
这是 EmployeeSave 类
MVC DefaultModelBinder 能够解析 Employee 和 EmployeeSave 类。
c# - DefaultModelBinder 无法反序列化作为 JSON 对象传递给操作的 .NET Dictionary 对象?
我有一个非常简单的课程:
我想在客户端的字典中填充数据,然后将其作为 JSON 对象传递给我的控制器操作。但是,无论我在客户端上尝试什么, DefaultModelBinder 似乎都无法反序列化它。
这是调用我的操作的示例 javascript 代码:
这是我的操作方法的简化版本:
请注意,相反的作品。当作为 JsonResult 传递时,FilterItem 对象被成功序列化并作为 JSON 对象传递给客户端。然而,试图反过来是行不通的。
我在 Connect 上阅读了票,并认为解决方法可以解决问题,但事实并非如此。
是否可以使用 ASP.NET MVC 3 中的 DefaultModelBinder 反序列化 .NET 字典?
asp.net-mvc-2 - DefaultModelBinder Implementation does not populate the model - ASP.NET MVC 2
I have a very simple implementation of the DefaultModelBinder, I need it to fire some custom validation.
MyViewModel is a public sealed class. The model binder is registered in the Global.asax this way:
The problem is that the model is never populated! But the MVC default model binder (I remove the registration in global.asax) works fine.
This is the view HTML:
Every field matches a property of the model.
jquery - 如何使用 jQuery 将 int 列表发送到 ASP.net MVC 默认模型绑定器
当我像这样使用 jQuery 发送一个 int 列表时:
然后 jQuery 将转换 pkList 对象并通过邮寄方式发送它,如下所示:
如果服务器是 PHP 但我使用 Asp.NET MVC3 并尝试使用默认模型绑定器获取这些值,这会很好:
但是pkList总是为null,好像默认的model binder无法绑定。
我该如何正确解决这个问题?
添加的 解决方案
我使用 Darin Dimitrov 的解决方案traditional
在 jQuery 中设置选项:
现在 jQuery 不再添加[]
参数了,它们是这样发送的:
并且 MVC 默认模型绑定器正确获取值。
希望这可以帮助某人。