问题标签 [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.

0 投票
2 回答
2346 浏览

asp.net-mvc - IModelBinder 和 ASP.NET MVC 测试版

有没有人有关于asp.net mvc beta 中新的IModelBinder 教程的链接?

我无法正确理解它,已经发生了很多变化。

谢谢

0 投票
1 回答
623 浏览

asp.net-mvc - 自定义 IModelBinder 和数据库访问

对于我的 asp.net mvc 项目中的用户对象,我编写了一个自定义模型绑定器来检查密码是否有效以及是否输入了两个匹配的密码等。

登录名需要是唯一的,我想知道我是否可以在模型绑定器中检查它,或者这被认为是不好的做法?

问题是在你到达控制器之前就调用了绑定器,所以我会有两个我的 dataContext 实例浮动,因此有多个到数据库的连接,我想我可以为此建立一个工厂。

这是我现在在控制器中所做的代码片段:

0 投票
1 回答
1951 浏览

asp.net-mvc - Extending Sanderson's custom mvc ModelBinder for an object stored in session

In his wonderful MVC book Steven Sanderson gives an example of a custom model binder that sets and retrieves a session variable, hiding the data storage element from the controller.

I'm trying to extend this to cater for a pretty common scenario: I'm storing a User object in the session and making this available to every action method as a parameter. Sanderson's class worked ok when the User details weren't changing, but now i need to let the user edit their details and save the amended object back to the session.

My problem is that I can't work out how to distinguish a GET from a POST other than by checking the number of keys in bindingContext.ValueProvider.Keys, and this seems so wrong I'm sure I'm misunderstanding something.

Can anyone point me in the right direction? Basically all Actions need access to the current user, and the UpdateMyDetails action needs to update that same object, all backed by the Session. Here's my code...

0 投票
4 回答
17697 浏览

asp.net-mvc - 实现 IModelBinder 时的最佳实践

我正在寻找一组在实施时使用的最佳实践IModelBinder

我已经阅读了三本不同的 MVC 书籍,每一本在它们的实现中都做了一些稍微不同的东西,没有任何真正的解释。

  • Hanselman、Haack、Guthrie、Conery 书中甚至没有提到IModelBinder
  • 巴勒莫建议扩展DefaultModelBinder而不是直接实现IModelBinder,但我真的不知道如何利用这些好处
  • Sanderson 提到更新现有的 Model 实例,以及呼吁ModelState.SetModelValue()遵循约定。

我只是想确保我的模型绑定器遵循约定,并且我正确理解整个ModelBindingContext.

有什么技巧、窍门、好的教程可以推荐吗?

0 投票
2 回答
2427 浏览

asp.net-mvc-2 - MVC 2、IModelBinder 和 ValueProvider 的变化

我正在尝试迁移到 ASP.Net MVC 2 并遇到一些问题。这是一个:我需要直接绑定字典作为查看帖子的结果。

在 ASP.Net MVC 1 中,它使用自定义IModelBinder完美运行:

它与一些显示数据字典的智能 HtmlBuilder 配合使用。

我现在遇到的问题是ValueProvider不再是 Dictionary<> 了,它是一个 IValueProvider 只允许获取名称已知的值

这真的不酷,因为我无法执行我的智能解析......

问题 :

  1. 还有其他方法可以获取所有密钥吗?
  2. 你知道另一种将 HTML 元素集合绑定到字典的方法吗?

感谢您的建议

O。

0 投票
1 回答
7979 浏览

asp.net-mvc - ASP.NET MVC - 能够处理数组的自定义模型绑定器

我需要实现一个功能,允许用户以任何形式输入价格,即允许 10 美元、10 美元、10 美元……作为输入。

我想通过为 Price 类实现一个自定义模型绑定器来解决这个问题。

表单包含一个数组或价格作为键

ViewModel 包含一个价格属性:

只要用户在 Value 输入中输入可转换为十进制的字符串,默认模型绑定器就可以很好地工作。我想允许像“100 USD”这样的输入。

到目前为止,我的价格类型的 ModelBinder:

如何实现正确处理数组的自定义模型 Binder?

0 投票
2 回答
1373 浏览

asp.net-mvc - 如何从自定义 ModelBinder 中调用 UpdateModel?(MVC)

我正在为我的模型中的复杂类型创建一些自定义绑定器。我的模型由具有自己单独的活页夹的对象组成。我希望基础对象完成其肮脏的工作,然后通过传递给标准 ModelBinder 路由来填充它封装的复杂对象。我该怎么做呢?

出于说明目的,我创建了一个非常简单的示例。

假设我的模型包含这些对象。

对于这些模型中的每一个,我都有以下活页夹。并不是说 PersonBinder 需要填充 PhoneNumber 但不想复制 PhoneNumber 活页夹中的代码。它如何委托给标准的 Binder 路由?

当然,我已经在 Global.asax.cs 文件中注册了我的 ModelBinders。

谢谢,

贾斯汀

0 投票
2 回答
678 浏览

asp.net-mvc-2 - Asp.net MVC2 IModelBinder 试图让我发疯(并成功)

假设我有

这个 BarClass 是我传递给 ViewPage 的模型。

我还(通过 ViewData)传递了一个IEnumerable<SelectListItem>包含所有 Foo 的,并且bar.Foo选择了匹配的那个(在运行时检查)。

然后我打电话Html.DropDownList("Foo", foos);

下拉列表呈现良好,但它没有选择正确的项目,因为 html 控件具有属性的名称并且它与ViewData.Eval()内部运行的混淆。这似乎是一种可接受的行为(在 SO 上看到了很多关于此的答案),所以我不争论这个并将对扩展的调用更改为:

选择了正确的值,我很高兴。所以我把表格寄回去。

可悲的是,在我的控制器的适当操作中, Foo 成员为空。所以我添加了一个FooModelBinder实现IModelBinder来拦截表单的 DDL_Foo 并正确初始化 FooClass。

FooModelBinder.BindModel永远不会被解雇并且bar.Foo为空。如果我再次更改视图并将下拉列表重命名为 Foo,FooModelBinder 会按预期触发,并且 bar.Foo 会按应有的方式初始化。

那么,我错过了什么?更重要的是,我应该如何以正确的方式做到这一点。我想出了很多技巧和解决方法,但这不是我想要的。我想知道如何正确地做。

谢谢!

[编辑] 感谢您的反馈,但我认为前缀不是问题。

关于Binder,我添加了它,因为否则它无法正确初始化。请注意,我正在处理的真实案例比这里介绍的要复杂得多。该解决方案只是我可以重现该问题的最小模型。

这里是询问的相关代码(或下载完整的解决方案):

控制器

看法

模型

全球阿萨克斯

[编辑] codeplex上有一个未解决的问题,如果你想解决它,请去投票(即使它已经开放了将近一年)。

0 投票
1 回答
2508 浏览

asp.net-mvc - 我可以在自定义模型绑定器中自动触发模型验证吗?

我有一个复杂的对象,我正在绑定一个表单。模型绑定器如下所示:

它正在做它应该做的事情;我从中得到了正确填充MyForm,并且对同一个 MyForm 实例的引用包含在 ModelState 中。但是,表单不会使用 theDataAnnotations或 my验证进行CustomValidation验证。为了进行验证,我必须TryValidateModel()在我的控制器中添加一个调用:

这不仅会调用我的自定义验证,还会更新 ModelState.IsValid 的值。

除了我的标题问题,这提出了几个问题:

  1. 当引用正确验证的表单的同一实例时,为什么不TryValidateModel(ModelState)验证表单?ModelStateTryValidateModel(form)

  2. 为什么会TryValidateModel(form)导致 的值ModelState.IsValid被更新?

  3. 一般来说,为什么活页夹负责更新ModelState

0 投票
1 回答
287 浏览

asp.net-mvc-3 - mvc3 IModelBinder 和 url

我在使用带有 url 格式的 iModelBinder 时遇到问题

http://localhost/controller/action/id/value

动作将是控制器中的函数,即 id/value 是 ie。id=12

当我尝试上面的链接时,我收到一个 404 错误页面未找到,并且查看堆栈我可以理解 MVC 正在寻找它不理解的路径。

使用以下作品

http://localhost/controller/action?id=value

如果有人知道是否可以解决此问题,我真的很希望能够使用“/”作为分隔符。

文斯