问题标签 [custom-model-binder]
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.
asp.net-mvc-3 - 如何使用自定义活页夹来规范用户输入?
根据用户输入,我想在实体到达控制器的操作之前取消实体的某些属性。在一个粗略的例子中(实际模型要复杂得多),假设我的实体有一个 BillingType 属性,它定义了客户是按月还是每两周计费:
现在假设用户选择按月收费,然后将 DayOfMonth 属性设置为 15。然后他改变主意,将 Billing Type 设置为每两周一次,并设置两个两周一次的属性,最后提交表单。我需要的是一种在未使用的属性(在此示例中为 DayOfMonth)到达控制器的操作之前将其无效的方法。
我知道当用户从一种计费类型更改为另一种计费类型时,或者通过拦截表单的 onSubmit 事件时,我可以通过 javascript 执行此操作。甚至在动作内部,在将其保存到上下文之前,但我需要一种方法来执行一次并忘记它。
我认为最好的方法是使用自定义模型绑定器,但我没有任何经验。我尝试创建一个新ModelBindingContext
对象,但我不知道如何在新对象中获取和解析表单数据,所以我显然需要一些指导。
c# - 在 Asp.Net Web API 中实现自定义模型绑定器时出错
我被这个非常奇怪的问题困住了。
我有一个名为AttendanceController
派生的 API 控制器,它又是从
这里APIControllerFA
派生的代码ApiController
从 PostAttendance 方法中可以看出,我有一个自定义ModelBinder
名称AttendenceRegistrationModelBinder
,这是代码
但是当我尝试使用 Fiddler 访问这个控制器时。我收到一条错误消息
我在这里做错了什么?
asp.net - Asp.net mvc3 过滤器和自定义模型绑定器执行顺序
在我的应用程序中,我有一个顺序为 0 的操作过滤器来处理超时(我们检查会话是否为空。如果是,则将用户引导到超时页面),它在所有控制器操作上进行了装饰。但是,我看到了一种间歇性的行为,其中超时并没有一直被优雅地处理。然后我发现,在自定义模型活页夹中,我们正在检查会话是否为空,如果是,则抛出空引用异常。
有人知道为什么这是间歇性的吗?模态绑定和过滤器执行是否在不同的线程上执行?
c# - 如何在 asp.net MVC 4 中链接活页夹?
我刚刚在 asp.net MVC 中编写了我的第一个模型绑定器。我从一个纯 HTML 表单开始,其中所有输入的名称都以“fm_”为前缀。
默认的活页夹工作得很好,我认为这是一个很好的节省时间的方法。
然后我决定我想要更简洁的属性名称,所以我改为:
和模型粘合剂:
有没有一种方法可以实现这一点,这样我就不必解析 DateTime 并让默认活页夹为我做这件事?
备注:
我意识到我可以更改表单输入名称以匹配我想要的模型名称,但我故意没有这样做以获得编写模型活页夹的经验,这导致了我这个问题。
问题的标题基于我正在尝试做的概念性想法 - 创建一个看起来像这样的链:
asp.net-mvc - 在 ASP.NET MVC 4 中,有没有一种方法可以为单个操作添加自定义 DateTime 模型绑定器?
我正在尝试将表单绑定到控制器中的模型参数。该模型包含一个 DateTime 字段,我希望在提交表单时绑定它。表单字段希望以非标准格式输入日期(由于各种原因,我无法更改)。
控制器动作是:
我只需要在 RegistrationDetails 类中自定义绑定一个 (DateTime) DateOfBirth 属性。所有其余属性都使用默认绑定。
我不想覆盖整个应用程序的 DateTime 绑定 - 只是为了这个单个操作(或者,如果更简单,控制器)。
知道我该怎么做吗?我尝试在操作上使用 ModelBinder 属性,如下所示:
但是,看来我需要为整个 RegistrationDetails 类创建一个自定义活页夹,这似乎有点矫枉过正。
另外,我不希望将自定义格式放在模型属性上,因为该类在其他地方使用,所以我污染了该类。
我正在使用 MVC4。
谁能告诉我处理这个的最好方法?
json - ASP.Net MVC 模型在 EditorFor 中绑定到 JSON
我希望能够通过隐藏文本框中的 JSON 将信息从我的视图模型传递到我的控制器。我正在使用 Google 地图 API 中的多边形。当用户编辑多边形时,我通过 javascript 将顶点存储在隐藏的输入中。
结果是:
我想将以下视图模型绑定到视图:
这与我看到的示例略有不同,因为我只想将我的一个属性发布为 Json。谁能指出我正确的方向?我知道我可以将它作为字符串传递并自行序列化/反序列化。但是,我希望有一个优雅的客户模型绑定器解决方案。
更新
我根据我发现的这篇文章想出了一个通用的解决方案:http: //mkramar.blogspot.com/2011/05/mvc-complex-model-postback-bind-field.html
在我的模型中:
然后在 global.asax Application_Start()
不幸的是,这只能让我到目前为止。这将表单值绑定到我的类就好了。但是,它不能解决将属性呈现为 Json 的问题。如您所见,我创建了一个自定义编辑器 GoogleMapPoints.cshtml,基本上我必须为每个我将拥有的 jsonbindable 类重新创建它。
有没有人知道一种方法来拥有一个通用的自定义编辑器,它会关注属性而不是类型,以便使用我的 JsonBindable 属性着色的属性的 EditorFor 总是在隐藏字段中呈现为 Json,而不管类型/类如何?
asp.net-mvc - 强类型局部视图,在运行时动态模型绑定到 2 个不同的模型类
主要的 RegisterModel 调用嵌套的 HomeAddress 和 MailAddress 模型。
地址的局部视图
我将如何定义我的 Parital 视图,以便我可以在运行时将它与 HomeAddressModel 或 MailAddressModel 绑定。
我的主要注册视图
这个问题有5个部分:-
- 是否正确创建了 RegisterModel 类?这是我们可以嵌套它们的方式吗?
- 我们应该为地址设置一个类,为两个地址设置两个不同的属性吗?像地址主页 {get;set;} 和地址邮件 {get;set;} 之类的东西。如果是,那么如何实现接下来的事情。
- 如何为地址创建部分视图?在使用单独的 HomeAddres 类和 MailAddress 类的两种情况下。或使用单个地址类。
- 如何使用上述两种方法在主寄存器视图中声明 partialView。
- 如何确保在 [HttpPost] Action Method 中我们可以读取所有值,即 RegisterModel 值已绑定,并且各个地址也已绑定。
asp.net-mvc - 我应该使用自定义模型绑定器将视图模型绑定到实体吗?
只是更多地使用自定义模型绑定器的一些想法。我目前仍在使用 IMapper 接口来执行此操作,但想知道自定义绑定器的部分目的是否是将视图模型或输入模型映射到业务实体?如果我使用 MVC 自定义活页夹,我可以看到可能会有一些限制。在 MVC 中使用自定义绑定器有什么好处?我的应用会获得更好的性能吗?
asp.net - 使用接口而不是具体类的 ASP.NET Web API 操作
我的团队需要使用这个框架为我们的公司和产品开发一个框架。其中一个必要条件是可以为特定客户定制产品,但它应该很容易用同一产品的另一个版本进行更新(不是自动的)。
我们正在使用 ASP.NET MVC 4 + Web API(目前,明年将基于我们的框架创建桌面产品)、NHibernate、大量使用 Autofac 作为 DI 容器和 N 层的 IoC。
因此,在 WebApp 的某些方面,我们使用 ViewModels 作为具有一个默认实现的接口,并使用 Autofac 将它们链接起来,这在未来的定制中很容易改变。
在 ASP.NET MVC 中,我们实现了 IModelBinderProvider 并创建了一个继承 DefaultModelBinder 的自定义类:
像这样的东西:
在我的控制器中,我只使用接口作为参数。因此,它工作正常,因为值已正确填充。
但是,如何在正确绑定值的 Web API 中执行相同的操作?我尝试实现 IModelBinder 并继承 ModelBinderProvider。我可以获得接口实现的实例,但未填充值。
这是 WebAPI 中的一个尝试实现:
我错过了什么?有没有可能做我们想做的事?
asp.net-mvc - ASP.NET MVC 使用自定义模型绑定器时从客户端检测到潜在危险的 Request.Form 值
在这里得到错误:
如何仅允许选择值?IE