问题标签 [imodelbinder]
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.
.net-core - Mvc 绑定自定义表单字段
我正在尝试将自定义表单字段绑定到现有的 ViewModel。我有一个看起来与此类似的 ViewModel
我正在使用上面的方法加载我的表单,但我还有一个CustomFormFieldComponent
添加自定义表单字段
这是基于 Employee 模型中的一些值
该组件非常简单,只需返回我从数据库中检索的列表
我怎样才能让那些自定义表单字段成为我的 ViewModel 的一部分?
我正在考虑做一个自定义模型绑定器,Employee 是一个复杂的对象,因此使用反射设置值并不那么简单。而且我什至还没有开始使用自定义表单字段。
asp.net - ASP.NET Core - IModelBinder - 访问控制器 DbContext
我有一个基于 ASP.NET 2 的 MVC 解决方案,带有一个通用控制器和一个自定义绑定器。
控制器代码如下:
因此,基本上,当我调用 Edit 操作时,会调用 MyCustomBinder 类。
MyCustomBinderClass (继承自DefaultModelBinder)需要覆盖:
并且这两种方法都引用了“调用”控制器。
所以我可以通过以下方式访问控制器的 DbContext:
--
现在,我正在切换到 ASP.NET 核心。为了创建一个自定义活页夹,我需要实现IModelBinder,所以我需要实现:
问题是,如何访问调用控制器的 DbContext?
我需要它才能对数据库数据执行操作。
第一个想法是在我的应用程序中只有一个上下文,这显然是错误的(并导致运行时错误)。
但是我仍然需要在调用控制器和自定义绑定器中都有相同的上下文;否则这也会导致错误,因为实体在 2 个不同的上下文中被修改。
关于如何解决这个问题的任何想法?
谢谢!
ajax - 错误“IModelBinder”的原因是什么,我该如何解决?
我正在编辑一个 asp.net MVC 项目。有 javascript 可以对 API 控制器进行 ajax 调用。我没有编写这个 ajax 脚本,它运行良好。我在数据项目中添加了一些模型(.cs 文件),突然间我收到了这个错误:
我不知道我做了什么来得到这个,也无法在网上找到这个错误。我在 StackOverflow 上找到了关于 IModelBinder 的问题,而且我似乎正在做所有的事情(例如,WebAPI ModelBinder Error)。
是什么导致了这个错误,我该如何解决这个问题?
这是ajax调用。
这是控制器中的服务器端代码。如果我在这里设置断点,它不会被击中:
这是派生自 IModelBinder 类的 DataSourceRequestModelBinder.cs。自从它工作以来,我没有对此进行任何更改。
}
asp.net-web-api2 - ASP.NET WebAPI:根据另一个属性中的值绑定模型的属性
Request 提供了一批具有不同签名的消息,并提供了该消息的“元数据”。所以,例子很简单:
所以任务是绑定每个'Messages[i].Body'表达式。到目前为止,我看到的唯一解决方案是解析整个请求正文字符串,尝试反序列化所有“通用”属性。然后手动完成所有操作。
我尝试创建自己的 IModelBinder,然后从 Messages[i].Type 中提取值,对请求进行部分反序列化,但默认 ValuePropviders 为模型及其部件返回 null。
不幸的是,我没有更多的想法。
c# - 抽象类和 IModelBinder,如何获得正确的 ValidationState?
上下文:
我有一个角度应用程序,它将复杂的数据发送到我的 .net Core API。发送的数据可以是一个图像 (ImageDto) 或几个图像 (StackImageDto),以及标题和标签。我们使用多部分 HTML 表单发送数据,这意味着数据不是 JSON 格式的。
错误:
目前 .Net Core 2.2 中存在一个带有BindModelAsync的错误: https ://github.com/aspnet/AspNetCore/issues/6616
类似问题:
我尝试遵循人们的建议,但我没有成功使其正常工作:
代码:
由于我需要使 API 工作,我使用不同的方式来设置我在控制器中使用的抽象类 DTO。
这是 DTO 类MediaDto:
图像Dto:
StackImageDto:
堆栈文件Dto
MediaLibraryConverter将 Json 转换为我的 MediaDto 实例:
AbstractModelBinder执行上下文绑定,因为我在控制器的操作中使用 [FromForm] 属性获取数据:
BindFormFiles是一个递归函数,有助于将从 HttpContext 获取的 json 和 IFormFile 绑定到 MediaDto 的实例
ExtractDataFromContext是从 HttpContext 中提取数据的递归函数
对于有兴趣了解 HttpContext.Request.Form 包含什么的人:
ValidateModelStateAttribute是一个 ActionFilterAttribute 验证所有控制器操作的当前 ModelState
如您所见,ModelState 无效不是因为错误,而是因为 ValidationState 是“未验证”。
如果我绕过 ActionFilter 并进入我的控制器的操作,我可以看到 Dto 正确填充:
问题:
我怎么能对context.ModelState说他的ValidationState是有效的?
imodelbinder - IModelBinder 延迟
我创建了使用接口作为 post 参数的控制器。由于参数是一个接口,我使用 IModelBinder 将 request.Body 转换为 IQuery 对象。IModelBinder解析没有问题,在Controller上执行也没有问题。我得到的唯一问题是 request.Body 被解析为 IQuery 对象直到在 Controller 主体上收到之前存在延迟。
我用来解析请求正文的 IModelBinder:
控制器:
正如上面的代码,我使用 Trace 来跟踪 IQuery 对象何时完成解析以及 Controller 何时收到 IQuery 对象。我查看输出窗口,发现在控制器上解析和接收后有 10+s 的延迟。 输出
我认为这可能与日志记录有关,所以我在启动时禁用了日志记录:
结果仍然存在延迟,并且对 IQuery 对象的 ToString 方法的调用仍然被称为禁用
呼叫请求示例:邮递员
我没有找到 ASP.Net Core ModelBindingContext 的源代码或任何源代码,所以我不知道是什么原因导致对象在被绑定器解析并在控制器上接收后延迟。
model-view-controller - dotnet core 中多个局部视图的模型绑定
我想根据具有不同模型绑定的模型类型,使用一个通用局部视图和其他多个局部视图来设计通用模型绑定。
我有一个基本对话模型和两个派生模型。
我有一种操作方法,我正在发布基于模型类型的 JSON 数据。
我正在根据对话框类型设置局部视图的视图名称并将其转换为相关模型并呈现公共局部视图“CommonDialogPartialView”并返回响应文本。
我在客户端附加了这个响应文本。
我常见的部分视图 HTML。
这个通用的局部视图获取 DialogModel 的模型,我正在根据视图名称从通用局部视图渲染另一个局部视图。
这是我对 Dialog type 1 的部分看法。
对于 Dialog 类型 2 的部分视图也是如此。
当我将模型转换为 DialogModel1 或 DialogModel2 时,它会引发异常。
asp.net - 模型绑定未执行
我正在尝试查看传入请求的内容,因此我可以编写一个适当的对象来绑定到 JSON。
IIUC,我的通用提供程序和绑定代码应该在每个 POST 上执行,无论传入类型如何。
我看不到我错过了什么。我的 Binder 和 Provider 代码不执行。
我在这里定义了提供者和绑定器。
我在启动时注册它。这个断点确实被击中。
或者