asp.net-mvc - ASP.Net MVC : What’s the Difference Between a Value Provider and Model Binder

标签 asp.net-mvc

我正在阅读一篇关于 Value Provider and Model Binder 之间有什么区别的文章.

我了解模型绑定(bind)器基本上获取传入数据并构建对象。假设我正在发送学生数据,然后模型绑定(bind)器在从帖子到服务器并构建学生对象时抓取传入的学生数据。

但是还是不明白MVC中Value Provider的工作是什么。

那么请用简单的示例解释一下 Value Provider 做了什么样的工作以及模型绑定(bind)器做了什么?

不清楚 haacked.com 在说什么

The DefaultModelBinder will pull the Id value from the RouteData and the Age, FirstName, and LastName values from the JSON when building up the Person object. Afterwards, it’ll perform validation without having to know that the various values came from different sources.



当我发布 id、name、age 等时,为什么模型绑定(bind)器将仅从路由数据中选择 id,而从 JSON 中选择其余数据。模型绑定(bind)器应该从 RouteData 中选择所有值或从 JSON 中选择所有值.......那么为什么只选择 id 呢?

mvc 中存在多少种不同类型的值提供者?

最佳答案

值(value)提供者 用于从请求中的不同来源获取数据

模型绑定(bind)器 从 ValueProviders 获取数据以创建一个对象。他们不会直接从 Route Data、JSON 或某些特定数据中获取它,这不是他们的责任。

  • ASP.Net MVC 5 中可用的 ValueProviders 列表,按优先级排序:
  • ChildActionValueProviderFactory
  • FormValueProviderFactory
  • JsonValueProviderFactory
  • RouteDataValueProviderFactory
  • QueryStringValueProviderFactory
  • HttpFileCollectionValueProviderFactor
  • ASP.Net Web API 中可用的 ValueProviders 列表,按优先级排序:
  • QueryStringValueProviderFactory
  • RouteDataValueProviderFactory

  • 引用:专业 ASP.Net MVC 5,Wrox 版中的 Brad Wilson

    多个 ValueProviders可以合作从不同来源获取数据。

    如果多次提供数据,则优先级很重要。

    例如: id 来自 querystring 和 RouteData - RouteData 胜过 querystring

    祝一切顺利

    关于asp.net-mvc - ASP.Net MVC : What’s the Difference Between a Value Provider and Model Binder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35798726/

    相关文章:

    asp.net-mvc - 如何增加 asp.net MVC 3 配置中的 maxUrlLength 属性?

    asp.net-mvc - 将 @Html.Action 添加到 _layout 时出现 "No route in the route table matches the supplied values."错误

    c# - 如何更改 ExceptionContext 自定义属性的重定向 View ?

    c# - 删除.net mvc中的路由元素

    c# - 无法找到请求的 .Net Framework 数据提供程序。 (SQL客户端)

    asp.net-mvc - ASP.Net MVC 3.0 Ajax.ActionLink 使用 javascript 的动态对象路由值

    c# - 如何将源类型 'System.Nullable<bool>' 转换为目标类型 'bool'

    asp.net - 无法加载文件或程序集或其依赖项之一。尝试加载格式不正确的程序

    c# - 我如何以编程方式在 resx 文件中创建另一个列

    asp.net-mvc - MVC - 查询字符串和操作参数问题