问题标签 [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# - 使用带有接口的 MVC4 的自定义 DefaultModelBinder 不会填充其他属性
好的..所以我有一个界面,我在保存时将其传回控制器,看起来有点像这样(删除大部分只是为了让这个想法得到理解)。如果需要,我可以添加更多细节,但我不想让每个人都不知所措。
然后我有几个接口的实现,但这里有一个例子......
从 Global.asax 内部 - 开始
所以这就是问题所在。下面的代码确定对象的类型并创建适当的对象。我认为发生的是,我可以看到所有值都在 bindingContent.ValueProvider 数据中发送,但有趣的是属性集合只列出了接口的值。base.CreateModel 将创建我需要的类型,但仅使用来自接口的数据填充对象。我可以用一些丑陋的代码来解决它,在我设置 DatabasePlatformID 的地方设置额外的属性,但是我的一些类有几个额外的属性。我可能在这里遗漏了一些明显的东西。像这样设置附加属性不是很容易维护。
请注意,我也尝试使用我在其他任何地方看到的代码来执行此操作,但我看到的情况更糟,对象根本没有被填充。
这是我的控制器
最后,这里是调用控制器的 javascript。使用敲除.js ..
SelectedElements 是一个 knockout.js observableArray。下面是可以传递的 javascript 对象。请注意,此数组将包含实现 IProjectElement 的元素集合。我也没有显示所有不同的类型,但它们都有一组基本数据并添加其他属性.
c# - ASP.MVC 4 DefaultModelBinder 在空字符串绑定到 List 时失败
因此,如果您将空字符串发布到这样的控制器
并尝试将其绑定到 List 发生非常奇怪的事情
有人遇到过这个问题吗?
为什么它将默认 int 值添加到列表中?
asp.net - ModelState ErrorMessage 文化本地化
我已经阅读了这些问题,但它们并没有解决我的问题。
我的问题:ModelState Validation errorMessages 总是英文的。本地化不起作用。
LocalizationAttribute.cs 文件
网页配置
全球.asax.cs
过滤器配置文件
我需要在模型状态错误开始之前设置文化,但我不知道该怎么做
c# - ASP.NET MVC5 模型绑定器 - 绑定集合时为空
我已经在网上进行了研究,但希望有人可以帮助我。
我有以下 ViewModel 类:
在编辑视图中,我使用自定义 EditorTemplate 来布局使用@Html.EditorFor(m => m.Interests)
. 有两个执行渲染的 EditorTemplate:
DictionaryRootViewModel.cshtml:
/li>DictionaryItemViewModel.cshtml:
/li>
问题:
使用 POST 提交表单时,仅Interests
填充集合并且Interest.Items
集合始终为空。该请求包含(除其他外)以下字段名称,它们在控制器操作方法中检查 Request.Forms 数据时也会出现。
- 兴趣[0].Id
- 兴趣[0].姓名
- 兴趣[0].Items[0].Id
- 兴趣[0].Items[0].Selected
都包含正确的值 - 但在控制器端,方法中的对象 pvm:
包含 Interests 集合中的数据(具有正确 id 和名称的项目),但对于集合的每个元素,它的 Items 子集合是空的。
我如何才能正确选择模型?
c# - Asp.net MVC 模型绑定派生类
我编写了一个抽象类PaymentMethod
和 2 个派生类, PaymentMethodInvoice
以及PaymentMethodBilling
. 对于他们每个人,我都写了 shared EditorTemplates
。
GET 工作正常,我选择我的PaymentMethod
并获得正确的表格。如果我发布此表单,模型绑定不起作用,它会尝试实例化抽象类PaymentMethod
。
我必须覆盖 CreateModelprotected override object CreateModel
还是有更好的解决方案来处理这个问题?
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 的代码:
这里是控制器动作的标题:
谢谢你。
asp.net - 在提交之前设置一个值不会将其发送到控制器
我有一个包含多个表单的视图,每个提交都应该提交一个具有特定值的隐藏字段,并且所有表单都共享相同的模型。在我的控制器中,我在渲染视图之前设置了该值,但是对于“发布”方法之一,我需要它,其他方法应该提交相同的隐藏字段但具有不同的值。
在这里,我仅使用 hiddenInput EventCommand显示视图的第二种形式
到目前为止,我尝试在 javascript 中设置它,但它不起作用
阅读有关如何执行此操作的信息,我找到了 ViewData 的解决方案,但使用该解决方法它也不起作用
任何帮助将不胜感激
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 按给定顺序在以下位置查找任何值。
- 申请表
- RouteData.Values
- 请求查询字符串
- 请求文件
这也适用于 Web API DefaultModelBinder 吗?如何在 WebAPI DefaultModelBinder 中获取 entryID 以从路由数据中绑定 entryID。
c# - 找到未从响应主体(表单数据)绑定到模型 MVC、默认模型绑定器的属性
我发送发布请求并获得响应正文表单数据:0[family]=Marco&0[name]=Polo&0[age]=66&1[family]=Family&0[name]=Name&0[age]=22
我有模型:
对于绑定我使用DefaultModelBinder
:
- 我想知道我有响应“0 [name] = Polo”的数据,它没有绑定到模型用户。模型用户中不存在属性“名称”。
- 我想知道是否有更多数据作为响应,然后我们可以绑定。
我该怎么做?
azure - 将字符串参数绑定到 AzureFunction 中的枚举类型
我正在尝试将字符串路由参数绑定到枚举类型,如下所示
当我到达端点时,代码给了我以下异常。
异常绑定参数 'req' -> 从 'System.String' 到 'MyCommon.KeyType' 的无效转换。”
模型绑定器无法将字符串参数绑定到 Enum 类型。在 MVC 或 WebAPI 应用程序中,绑定到 Enum 可以正常工作,但 AzureFunction 似乎不支持绑定。无论如何要在 AzureFunction 中插入自定义 ModelBinder 以使其工作?