问题标签 [modelbinders]

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 回答
11203 浏览

asp.net-mvc-2 - 在自定义模型绑定器中设置 ModelState 值

我在 ASP.NET MVC 2 中使用自定义模型绑定器,如下所示:

当我从这个活页夹返回到控制器动作时,作为动作参数提供的我的业务对象被正确更改(obj.Created = .... 行工作)。

但是,ModelState 没有更新。我知道这一点是因为我在我的业务对象的 Slug 属性上有Required,虽然我在我的自定义模型绑定器中更改了 ModelStateDictionary,为它提供了一个 Slug(如您在上面看到的),但 ModelState.IsValid 仍然是错误的。

如果我将 ModelState["Slug"] 放在调试会话的 Watch 窗口中,它会说它有错误 (1),所以显然它是空的,因此失败了。

如何正确更改自定义模型绑定器代码中的 ModelState?

0 投票
2 回答
101 浏览

asp.net-mvc - 在自定义模型绑定器中访问数据存储的正确方法是什么?

我应该如何在我的自定义模型绑定器中正确实现数据访问?

就像在控制器中一样,我使用 IContentRepository,然后让它在构造函数中创建其实现类的实例。所以我已经准备好在稍后阶段合并 IoC (DI)。

现在我在模型活页夹中需要类似的东西。我需要在活页夹中进行一些数据库查找。我正在考虑像在控制器中那样做,但我愿意接受建议。

这是我的一个控制器的一个片段,所以你可以想象我是如何在其中做的:

0 投票
1 回答
504 浏览

asp.net-mvc-2 - ModelBinders, complex nested Types and Interfaces

I've a scenario where I need to bind to an interface - in order to create the correct type, I've got a custom model binder that knows how to create the correct concrete type (which can differ).

However, the type created never has the fields correctly filled in. I know I'm missing something blindingly simple here, but can anyone tell me why or at least what I need to do for the model binder to carry on it's work and bind the properties?

The Model in my case is a complex type that has an IProduct property, and it's those values I need filled in.

Model:

0 投票
2 回答
3070 浏览

asp.net-mvc - ValueProvider.GetValue 扩展方法

我有一个这样的模型;

如您所见,这两个属性是枚举。

现在我想使用我自己的模型活页夹,因为我现在不会费心进入。

所以我有;

问题是对于每个属性,并且有堆,我需要做整个 try catch 块。

我想我可能会创建一个扩展方法,它可以为我完成整个块,我需要传入的只是模型属性和枚举。

所以我可以做类似的事情;

quickQuote.state = bindingContext.ValueProvider.GetModelValue("state", ...)等等

这可能吗?

0 投票
6 回答
964 浏览

asp.net-mvc - 可以从自定义模型绑定器中访问数据库吗?

假设我有一个从 HttpPost 和数据库中获取一些数据的对象。我想我想让 ModelBinder 进入数据库/存储库以获取帖子中丢失的数据。在实践中,这是一个好主意还是坏主意?

0 投票
1 回答
356 浏览

c# - 测试 DefaultModelBinder 时出现 NullReferenceException

我正在使用 BDD/TDD 技术开发一个项目,并且我正在尽最大努力坚持到底。我刚刚遇到的一个问题是对 DefaultModelBinder 进行单元测试。我正在使用 mspec 编写我的测试。

我有一个这样的类,我想绑定到:

这是我构建规范上下文的方式。我正在构建一个假表单集合并将其填充到 bindingContext 对象中。

最后,当我从我的一个规范中执行 .BindModel() 时,我的规范引发了一个空引用异常:

任何线索可能是什么?

如果需要,请随时向我询问更多信息。我可能认为某些事情是理所当然的。

0 投票
3 回答
596 浏览

asp.net - ASP.Net MVC 优雅 UI 和 ModelBinder 授权

我们知道授权的东西是一个横切关注点,我们尽我们所能避免在我们的视图中合并业务逻辑。

但是我仍然没有找到一种优雅的方法来使用当前用户角色过滤 UI 组件(例如小部件、表单元素、表格等),而不会用业务逻辑污染视图。这同样适用于模型绑定。


例子

形式:产品创作

领域:

  • 姓名
  • 价格
  • 折扣

角色:

  • 角色管理员

    • 允许查看和修改名称字段
    • 允许查看和修改价格字段
    • 允许查看和修改折扣
  • 角色管理员助理

    • 允许查看和修改名称
    • 允许查看和修改价格

Fields每个角色表现出来的都不一样,也model binding需要忽略discount field'Administrator assistant'这个角色。

你会怎么做?

0 投票
1 回答
657 浏览

asp.net-mvc - ASP.NET MVC 2:Linq to SQL 实体 w/ ForeignKey 关系和默认 ModelBinder 陌生

我再一次遇到了 Linq to Sql 和 MVC Model Binder 的问题。

我有 Linq to Sql 生成的类,为了说明它们,它们看起来类似于:

“用户”与“客户”和“站点”有关系。User 类具有可为空的 ClientID 和 SiteID,因为管理员用户未绑定到客户端或站点。

现在我有一个视图,用户可以在其中编辑“用户”对象,该视图包含所有“用户”属性的字段。提交表单后,在我的 UserController 中调用适当的“保存”操作:

这里的问题是 ClientID 从未设置,它始终为空,即使该值在 FormCollection 中。

为了弄清楚出了什么问题,我在 Linq to Sql 设计器生成的类中为 ClientID 和 SiteID getter 和 setter 设置了断点。我注意到以下内容: 正在设置 SiteID,然后正在设置 ClientID,但是随后将 Client EntityRef 属性设置为空值,这反过来又将 ClientID 设置为空!我不知道为什么以及试图设置 Client 属性的原因是什么,因为从不调用 Site 属性设置器,只调用 Client 设置器。

从 FormCollection 手动设置 ClientID,如下所示:

抛出“ForeignKeyReferenceAlreadyHasValueException”,因为它之前已经设置为 null。我发现的唯一解决方法是使用自定义方法扩展生成的部分 User 类:

但这不是一个令人满意的解决方案。我不认为它应该像这样工作?

请有人赐教。到目前为止,Linq to Sql 让我发疯!

此致

0 投票
1 回答
445 浏览

asp.net-mvc-2 - ASP.NET MVC 2 - 是否值得为此场景创建自定义模型绑定器?

好吧,我有一个像这样的复杂表单视图模型:

这是我在视图中使用的模型,它(视图)看起来像这样:

控制器如下所示: [HttpPost] public ActionResult PayNow() { //交易模型 Transaction transaction = new Transaction();

我正在使用 Request.Form 来获取交易所需的值。如果我想这样做:

我想我需要创建一个自定义模型投标人。值得麻烦吗?我会在性能或任何其他方面获得什么吗?或者你知道我可以做这种事情的任何其他方法吗?我不知道如何正确表达这种情况,所以我找不到任何相关的东西......提前谢谢你。

0 投票
2 回答
1311 浏览

asp.net-mvc-2 - ASP.Net MVC2 CustomModelBinder 不工作...从 MVC1 更改

(如果这看起来很冗长,我很抱歉 - 试图提供所有相关代码)

我刚刚升级到 VS2010,现在在尝试让新的 CustomModelBinder 工作时遇到了麻烦。

在 MVC1 中,我会写类似

当然我会在 Global.asax.cs 中注册自定义活页夹:

现在,在 MVC2 中,我发现我对 base.BindModel 的调用返回了一个所有内容都为空的对象,我根本不想迭代新的 ValueProvider.GetValue() 函数所显示的所有表单字段。

谷歌没有发现这个错误的匹配项,所以我认为我做错了什么。

这是我的实际代码:

我的域对象(推断您对封装的子对象的喜好——我知道我也需要自定义绑定器,但是三个“简单”字段(即基本类型)Id、TradingName 和 BusinessIncorporated 也返回 null) :

我的控制器方法:

我的自定义活页夹:

我的活页夹注册:

...以及我认为的片段(这可能是前缀问题吗?)