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

asp.net-mvc - 向 DefaultModelBinder MVC2 添加多个前缀

我查看了大多数 ModelBinding 示例,但似乎无法收集到我要查找的内容。

我想要:

在 post 上绑定到这个方法

用户输入模型在哪里

约定是使用没有“InputModel”的类名,但我不想每次都用 BindAttribute 指定这个,即:

我尝试过覆盖 DefaultModelBinder,但似乎找不到合适的位置来注入这一点功能。

0 投票
2 回答
2802 浏览

asp.net-mvc - 输入文件自动绑定到 ASP.NET MVC 中的字节 [] 数组

有人设法让默认活页夹与输入文件控件和字节数组类型的属性一起使用吗?

如果我的 ViewModel 上有一个名为 Image 的属性,并且我的视图名称 Image 上有一个文件输入控件,则默认活页夹会发出此错误:

输入不是有效的 Base-64 字符串,因为它包含非 base-64 字符、两个以上的填充字符或填充字符中的非空白字符。

0 投票
3 回答
1804 浏览

asp.net - ASP.NET 网络表单中的模型绑定器

多年来,我从事 ASP.NET Web 表单开发,我被一个专有库宠坏了,它允许我做以下事情:

从概念上讲,代码所做的事情与 MVC 模型绑定器所做的非常相似,即给定表单的发布值作为输入,它将填充自定义对象。基本上它使开发人员免于编写猴子代码,例如

等等..

现在,这个专有库在我参与的新项目中不可用,它是一个 Web 表单项目。所以我想知道是否有一种System.Web.Mvc.DefaultModelBinder在 Web 表单上下文中使用的方法。目标是实现从域对象和返回的控件的简单和容易的填充,理想情况下考虑到验证注释。如果这是不可能的,有人可以向我指出一个开源解决方案来解决这个需求。我真的不想重写这样的代码。

提前致谢。

0 投票
5 回答
21899 浏览

asp.net-mvc - 在强类型视图中格式化可为空的 DateTime 字段

我的模型中有一个带有 BornDate 属性的 Person 类,定义为

在我看来,我将此字段用作

问题是,当我使用 BornDate 文本框编辑 Person 实例时,其格式为

而我想在没有时间部分的情况下格式化它(“dd/MM/yyyy”)。我无法将 toString 方法与格式字符串一起使用,因为它是一个可为空的字段。

我能做些什么?

0 投票
1 回答
2230 浏览

jquery - MVC 默认模型绑定器 - 将多选下拉列表绑定到 IList

我在使用 NHibernate 的 ASP.NET 应用程序中使用 MVC 2.0。

我有一个使用 NHibernate 的工作视图、控制器和数据访问层,它能够显示和保存与另一个映射实体有关系的实体:

人 --> 位置

它使用 HTML 帮助器 HTML.DropDownListFor() 来显示所有位置的列表。用户可以从列表中选择一个位置,然后按保存。

默认模型绑定器正确设置正在保存的 Person 实体上的 Location 值。此位置是一个休眠映射实体,并且已实例化并具有在下拉列表中选择的 id 值。显然,由于保存位置的下拉列表仅具有位置的 id,因此该位置的其余值为空。还行吧。我只是想通过对现有位置的引用来保存 Person 。

所以,复杂性来了。我们需要改变两个实体之间的关系。现在 Person 可以引用许多位置。

Person.Locations 将是一个 IList

我的问题是,如何让默认模型绑定器从多选下拉列表中进行选择并填充 IList。

过去,我设法使用 Phil Haacked 解释的语法 [index].PropertyName 保存实体集合 .... http://haacked.com/archive/2008/10/23/model-binding-to -a-list.aspx

这里的问题是我只有一个下拉列表,它会将具有不同值的重复键发回模型绑定器:

Person.Location.Id:2
Person.Location.Id:4
Person.Location.Id:5

不幸的是,这不起作用。位置列表不断返回 Null。

我们的 UI 人员正在使用一个漂亮的 JQuery 插件来显示选择列表中的项目,所以我宁愿不必使用不同的 UI。

有任何想法吗?

0 投票
1 回答
598 浏览

asp.net-mvc - ASP.NET 模型绑定到基类型

我有一个我的视图模型都继承自的 BaseViewModel。

在我的控制器中,我使用工厂方法根据输入返回正确的视图模型:

当我使用 TryUpdateModel 尝试绑定到我知道包含“TitleOfPublication”键的 FormCollection 时,它从未在我的视图模型中设置:

我认为这与 DefaultModelBinder 使用 BaseOutputViewModel 绑定 FormCollection 键有关 - 它不包含“TitleOfPublication”,派生的 MagazineViewModel 包含。

我正在尝试推出自己的模型绑定器,以覆盖 DefaultModelBinder 的 BindModel 行为。它全部正确连接,我可以在 TryUpdateModel 调用后直接对其进行调试:

但我不确定如何使用 bindingContext?需要更新什么以便我可以告诉 DefaultModelBinder 使用派生的 View Model 属性进行绑定?还是我完全误解了这一点!

我确实尝试过覆盖 CreateModel——很像 MvcContrib 中的 DerivedTypeModelBinder,但我认为因为我给活页夹提供了一个模型实例来使用,所以永远不会调用 CreateModel。在 Mvc DLL 上使用反射器,只有当模型为空时才调用 CreateModel 的“BindComplexModel”:

任何指针都收到了!

干杯

0 投票
1 回答
1562 浏览

asp.net-mvc - 当 ModelState 在 HttpPost 上无效时,ASP.NET MVC 自动绑定刷新的模型

我正在开发一个 ASP.NET MVC2 应用程序。我开始意识到 MVC 在幕后所做的与 ModelState 和模型绑定有关的一件非常令人惊讶但又令人惊奇的事情。我有一个 ViewModel,它有一大堆数据——一些字段是表单的一部分,而其他字段只是 UI 的一部分。在 HttpPost 上,我的 Action 方法使用 DefaultModelBinder 尝试绑定整个模型,但只有作为表单一部分的字段才能成功反序列化 - 所有其他字段都保持为空。这很好,可以理解。如果 ModelState 无效,我需要从数据库中刷新模型并绑定那些特定的表单字段,然后再返回到相同的编辑视图以显示那些关联的 ModelState 验证错误。

这就是我惊奇和好奇的地方。我的假设是,为了让我将表单字段与刷新的模型绑定,我需要调用UpdateModel()or TryUpdateModel<>(),传入新刷新的模型。例如:

但是,我发现如果我只是返回refreshedModel视图而不调用TryUpdateModel<>()刷新的模型会自动与发布的表单字段值绑定!因此,TryUpdateModel<>()这里不需要!

我能理解它的唯一方法是,由于 ModelState 处于无效状态,一旦我返回带有刷新模型的视图,“MVC 渲染引擎”循环遍历 ModelState 错误并将这些属性值与我刷新的绑定模型。这简直太棒了!但是,我想要证明这个假设。我在网络上的任何地方都找不到有关此的文档。任何人都可以确认我的假设为什么/如何发生这种令人敬畏的自动绑定行为和/或教育我为什么/如何发生,希望有一些在线文档链接支持,以便我更全面地了解幕后发生的事情?

0 投票
1 回答
620 浏览

model-view-controller - 使用 MVC Model Binder,如何防止绑定内部复杂对象属性?

我有以下型号

在控制器中:

问题是活页夹甚至尝试验证内部地址类,但我只关心 AddressID 但 ModelBinder 坚持甚至验证 City 和 Street 属性。

我怎样才能简单地覆盖原始 ModelBinder 只是为了验证内部对象的 ID(在我的情况下是 AddressID)?

有简单的方法吗?

0 投票
1 回答
1000 浏览

asp.net - 默认模型绑定器不绑定我的模型类

我正在尝试发布一个应该使用 ASP.NET MVC 2 中的默认模型绑定器功能的帖子,但不幸的是我无法通过....

当我单击结帐按钮时,我使用 jQuery 代码动态地填充表单,然后将此表单提交到服务器。这是提交的表单

这是处理表单提交事件的 jQuery 代码

这是应该被调用的控制器动作

最后这是涉及的 CartModel 类

但默认的模型绑定器不会将 Web 表单数据绑定到 CartModel 类。使用 Fiddler 我已经能够看到发送到服务器的数据是正确的,正如您从以下快照中看到的那样

替代文字

有什么建议吗?

0 投票
1 回答
721 浏览

c# - 具有继承的模型的 asp.net mvc 默认模型绑定器

我有一个绑定到的表单,它具有以下结构:

我的动作是这样的:

数据以表格形式出现

当我在 SaveAttachments 操作中访问状态时,ID 存在,但名称不存在。我看到它被正确发布,但为什么它没有正确绑定?