问题标签 [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 回答
143 浏览

c# - 使用带有接口的 MVC4 的自定义 DefaultModelBinder 不会填充其他属性

好的..所以我有一个界面,我在保存时将其传回控制器,看起来有点像这样(删除大部分只是为了让这个想法得到理解)。如果需要,我可以添加更多细节,但我不想让每个人都不知所措。

然后我有几个接口的实现,但这里有一个例子......

从 Global.asax 内部 - 开始

所以这就是问题所在。下面的代码确定对象的类型并创建适当的对象。我认为发生的是,我可以看到所有值都在 bindingContent.ValueProvider 数据中发送,但有趣的是属性集合只列出了接口的值。base.CreateModel 将创建我需要的类型,但仅使用来自接口的数据填充对象。我可以用一些丑陋的代码来解决它,在我设置 DatabasePlatformID 的地方设置额外的属性,但是我的一些类有几个额外的属性。我可能在这里遗漏了一些明显的东西。像这样设置附加属性不是很容易维护。

请注意,我也尝试使用我在其他任何地方看到的代码来执行此操作,但我看到的情况更糟,对象根本没有被填充。

这是我的控制器

最后,这里是调用控制器的 javascript。使用敲除.js ..

SelectedElements 是一个 knockout.js observableArray。下面是可以传递的 javascript 对象。请注意,此数组将包含实现 IProjectElement 的元素集合。我也没有显示所有不同的类型,但它们都有一组基本数据并添加其他属性.

0 投票
1 回答
880 浏览

c# - ASP.MVC 4 DefaultModelBinder 在空字符串绑定到 List 时失败

因此,如果您将空字符串发布到这样的控制器

并尝试将其绑定到 List 发生非常奇怪的事情

在此处输入图像描述

有人遇到过这个问题吗?

为什么它将默认 int 值添加到列表中?

0 投票
1 回答
1898 浏览

asp.net - ModelState ErrorMessage 文化本地化

HttpPost 上的 ModelState 验证文化

来自 ModelState 的错误消息未本地化

我已经阅读了这些问题,但它们并没有解决我的问题。

我的问题:ModelState Validation errorMessages 总是英文的。本地化不起作用。

LocalizationAttribute.cs 文件

网页配置

全球.asax.cs

过滤器配置文件

我需要在模型状态错误开始之前设置文化,但我不知道该怎么做

0 投票
2 回答
1449 浏览

c# - ASP.NET MVC5 模型绑定器 - 绑定集合时为空

我已经在网上进行了研究,但希望有人可以帮助我。

我有以下 ViewModel 类:

在编辑视图中,我使用自定义 EditorTemplate 来布局使用@Html.EditorFor(m => m.Interests). 有两个执行渲染的 EditorTemplate:

  1. DictionaryRootViewModel.cshtml:

    /li>
  2. DictionaryItemViewModel.cshtml:

    /li>

问题:

使用 POST 提交表单时,仅Interests填充集合并且Interest.Items集合始终为空。该请求包含(除其他外)以下字段名称,它们在控制器操作方法中检查 Request.Forms 数据时也会出现。

  • 兴趣[0].Id
  • 兴趣[0].姓名
  • 兴趣[0].Items[0].Id
  • 兴趣[0].Items[0].Selected

都包含正确的值 - 但在控制器端,方法中的对象 pvm:

包含 Interests 集合中的数据(具有正确 id 和名称的项目),但对于集合的每个元素,它的 Items 子集合是空的。

我如何才能正确选择模型?

0 投票
1 回答
1698 浏览

c# - Asp.net MVC 模型绑定派生类

我编写了一个抽象类PaymentMethod和 2 个派生类, PaymentMethodInvoice以及PaymentMethodBilling. 对于他们每个人,我都写了 shared EditorTemplates

GET 工作正常,我选择我的PaymentMethod并获得正确的表格。如果我发布此表单,模型绑定不起作用,它会尝试实例化抽象类PaymentMethod

我必须覆盖 CreateModelprotected override object CreateModel还是有更好的解决方案来处理这个问题?

0 投票
4 回答
502 浏览

c# - DateTime.Parse 不适用于 MVC 自定义活页夹

我从 .NET MVC Web 应用程序中的 Action 的隐式绑定中获取 DateTime。问题是我正在获取格式为“MM/dd/yyyy”的日期,而我通过带有 Ajax 格式的查询字符串发送它,格式为“dd/MM/yyyy”。

我知道这是使用 GET 协议而不是 POST 时 .NET MVC Binder 的一个已知问题,所以我确实实现了一个自定义活页夹来将日期解析为正确的格式。这是代码:

但是,使用该代码 Parse 无法正常工作,它什么也不做。我正在使用“01/04/2014 11:37:00”(四月)之类的日期对其进行测试,并且我正在“result.Date”日期“04/01/2014 11:37:00” (一月),在解析之前和之后。

所以,问题是:为什么“DateTime.Parse”方法不能正确解析日期?

更新:

下面是 SearchVM 的代码:

这里是控制器动作的标题:

谢谢你。

0 投票
3 回答
90 浏览

asp.net - 在提交之前设置一个值不会将其发送到控制器

我有一个包含多个表单的视图,每个提交都应该提交一个具有特定值的隐藏字段,并且所有表单都共享相同的模型。在我的控制器中,我在渲染视图之前设置了该值,但是对于“发布”方法之一,我需要它,其他方法应该提交相同的隐藏字段但具有不同的值。

在这里,我仅使用 hiddenInput EventCommand显示视图的第二种形式

到目前为止,我尝试在 javascript 中设置它,但它不起作用

阅读有关如何执行此操作的信息,我找到了 ViewData 的解决方案,但使用该解决方法它也不起作用

任何帮助将不胜感激

0 投票
0 回答
83 浏览

asp.net-mvc - 关于 Web API DefaultModelBinder 行为的问题

鉴于,路线设置如下

对于 MVC:/entries/{entryID}/Children

对于 API:/api/entries/{entryID}/Children

我希望请求绑定到的模型是。

和控制器如下,

对于 MVC,

对于 Web API,

在这两种情况下,EntryName 和 Count 都是通过表单数据提供的。但我想通过 url 检索 EntryID,即路由数据。

只有 MVC 默认模型绑定器能够从路由数据中绑定 EntryID 的值。但是,Web API 中的 Default Model Binder 无法从路由数据中绑定属性 EntryID 的值。

根据 Pro ASP.NET MVC 5 Book,DefaultModelBinders 按给定顺序在以下位置查找任何值。

  1. 申请表
  2. RouteData.Values
  3. 请求查询字符串
  4. 请求文件

这也适用于 Web API DefaultModelBinder 吗?如何在 WebAPI DefaultModelBinder 中获取 entryID 以从路由数据中绑定 entryID。

0 投票
1 回答
74 浏览

c# - 找到未从响应主体(表单数据)绑定到模型 MVC、默认模型绑定器的属性

我发送发布请求并获得响应正文表单数据:0[family]=Marco&0[name]=Polo&0[age]=66&1[family]=Family&0[name]=Name&0[age]=22

我有模型:

对于绑定我使用DefaultModelBinder

  • 我想知道我有响应“0 [name] = Polo”的数据,它没有绑定到模型用户。模型用户中不存在属性“名称”。
  • 我想知道是否有更多数据作为响应,然后我们可以绑定。

我该怎么做?

0 投票
1 回答
1208 浏览

azure - 将字符串参数绑定到 AzureFunction 中的枚举类型

我正在尝试将字符串路由参数绑定到枚举类型,如下所示

当我到达端点时,代码给了我以下异常。

异常绑定参数 'req' -> 从 'System.String' 到 'MyCommon.KeyType' 的无效转换。”

模型绑定器无法将字符串参数绑定到 Enum 类型。在 MVC 或 WebAPI 应用程序中,绑定到 Enum 可以正常工作,但 AzureFunction 似乎不支持绑定。无论如何要在 AzureFunction 中插入自定义 ModelBinder 以使其工作?