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

asp.net - MVC 3空查询字符串参数值绑定为空字符串而不是null

我有以下内容:

这个动作:

使用空查询字符串参数从此 url 调用:

现在我的理解是,从 MVC 2 开始,DefaultModelBinder 会将这些值保留为空值。但是,我发现它们实际上设置为空字符串。这实际上是预期的行为吗?这在任何地方都有记录吗?

谢谢

0 投票
3 回答
2138 浏览

model-view-controller - 如何将另一个参数从 jquery ajax 传递给 mvc 控制器,以及 form.serialize()

我使用一个名为 jscroller 的 jQuery 插件,它使用 jquery.ajax 来进行 ajax 调用。我需要从搜索表单中传递所有参数,并将它们传递给 mvc 控制器,我认为最好的方法是将以下 expr 放入“数据”字段:

我的问题是我需要与表单值一起传递每次调用都会更改的“页面”值。

如何将页面值与“数据”字段中的“序列化”表达式一起放置,或者真的有另一种更有效的方法吗?

0 投票
1 回答
1537 浏览

asp.net-mvc-3 - bindmodel vs createmodel asp mvc 3

我正在用 Asp 开发我的第一个应用程序。我正在使用环境 Asp.NET MVC 3。我有一个具有单个参数的控制器操作。该参数的类型是复杂对象。

我正在使用 ModelBinder 类。但我不确定是否应该覆盖BindModel函数或CreateModel函数。

这两个功能之间有什么区别以及它们何时被rooter完全使用。

谢谢 !

0 投票
1 回答
3675 浏览

asp.net-mvc-3 - 如何从自定义模型绑定器返回 HTTP 状态代码

我有一个自定义模型绑定器,它从 MEF 容器中提取接口的实现。它的实现如下:

当 MEF 具有 petId 的导出时,这非常有效......但当导出不存在时返回 http 状态 500(服务器错误)。错误消息混淆要求指示应返回 http 状态 403(禁止)。

可以做些什么来捕获错误,更改响应状态,或者不返回内容,或者重新路由 Action 来处理这种情况?

0 投票
2 回答
110 浏览

asp.net-mvc-3 - 在动作签名中选择对象绑定器

我有一个自定义模型绑定器来从会话中获取数据,但我也想不时使用默认绑定器。

是否可以在动作签名中选择模型绑定器而不是使用 UpdateModel?

例子

谢谢

0 投票
1 回答
3997 浏览

c# - bindingContext.ModelName 为空?

所以我正在尝试应用Darin Dimitrov 的答案,但在我的实现中 bindingContext.ModelName 等于“”。

这是我的视图模型:

这是发布模型类型的视图部分:

这是我的自定义模型绑定器:

最后,Global.asax.cs 中的行:

在被覆盖的CreateModel函数内部,在调试模式下我可以看到它bindingContext.ModelName等于“”。而且,typeValue是 null 所以CreateInstance功能失败。

0 投票
1 回答
1053 浏览

asp.net-mvc - 具有包含复杂成员的列表属性的 MVC 视图模型

我有一个如下所示的模型

如果控制器动作是

谁能告诉为什么默认模型绑定器无法从标签映射列表成员,即

请注意,已选择所有值。

而以下作品

老实说,我知道为什么它不起作用:(因为如果我查看 http 标头以防选择提交的数据对于默认模型绑定器来说是不够的。

谁能告诉标签内要更改什么,以便提交的数据是

0 投票
2 回答
1269 浏览

c# - .NET MVC:如何让模型绑定器将 null 分配给列表属性?

我有一个这样的模型:

我正在向以模型作为参数的操作方法发送请求。该请求包含以下键值对:" Items=" (i. e. Items=null)。默认模型绑定器将 Items 设置为 1null项的列表,我希望列表属性本身为null(或至少为空)。

有没有办法做到这一点?

显然,我可以进行某种自定义模型绑定,但我更喜欢使用默认模型绑定器的解决方案(也许修改请求的格式)。

0 投票
1 回答
422 浏览

c# - 如何在 asp.net MVC 4 中链接活页夹?

我刚刚在 asp.net MVC 中编写了我的第一个模型绑定器。我从一个纯 HTML 表单开始,其中所有输入的名称都以“fm_”为前缀。

默认的活页夹工作得很好,我认为这是一个很好的节省时间的方法。

然后我决定我想要更简洁的属性名称,所以我改为:

和模型粘合剂:

有没有一种方法可以实现这一点,这样我就不必解析 DateTime 并让默认活页夹为我做这件事?

备注

我意识到我可以更改表单输入名称以匹配我想要的模型名称,但我故意没有这样做以获得编写模型活页夹的经验,这导致了我这个问题。

问题的标题基于我正在尝试做的概念性想法 - 创建一个看起来像这样的链:

0 投票
2 回答
1979 浏览

asp.net-mvc - 如何告诉默认模型绑定器在回发时忽略属性

所以我的模型中有这个费用抽象类(由 EF 生成,并考虑到数据库优先)

它被许多其他类继承以模拟不同类型的费用,例如 QuarterlyFee 之类的东西。我在模型中还有一个 Customer 类,客户可以有自定义费率,由 CustomerRate 类建模。

现在在客户详细信息页面上,我正在尝试显示客户的所有可能费用,以便用户可以选择哪些费率是自定义的,哪些是标准的,没有投标交易我只是创建一个 ViewModel 类 PossibleFee 来建模:

我在 Customer 类中添加了一个属性来保存可能的费用(ICollection PossibleFees),我在 Controller 方法中填充该属性(public ActionResult Details(int id = 0)),稍后是一个 EditorTemplate,然后我有一个列表客户可能需要支付的所有费用,具体取决于用户可以编辑的产品。

但是现在在回发时,当我点击保存按钮时,默认模型绑定器会完成它的工作并尝试填充可能费用的 ICollection,并为每个可能费用尝试创建一个费用对象来填充同名的属性。

当然它不起作用,因为 Fee 是抽象的,问题很简单:我如何告诉 DefaultModelBinder 在回发时忽略该属性,因为我在回发时不需要它?

我知道我可以简单地在可能费的 EditorTenplate 类的可能费中重新复制我需要的字段,甚至可以从费中删除摘要。但我想知道是否可以在不接触模型的情况下根据需要调整 DefaultModelBinder。

编辑 2:在我看来,Yarx 提供了一个更清洁的解决方案,请参阅下面的 2 个帖子

编辑:好吧,Carlos Corral Carvajal 几乎做对了,在 ModelBinder 尝试创建对象后调用 SetProperty 方法,所以我不得不改写 BindProperty

添加了自定义属性以防有人需要它