创建需要类型信息的 MVC3 ValueProviderFactories?

2024-04-16

我正在尝试为 ASP MVC3 编写 Protobuf ValueProviderFactory。我已经成功锻炼了如何添加工厂 https://stackoverflow.com/questions/6885538/adding-custom-valueproviderfactories-to-asp-net-mvc3,但现在我偶然发现了一个更紧迫的问题。 这是当前序列化发生的地方JsonValueProviderFactory.cs

    JavaScriptSerializer serializer = new JavaScriptSerializer();
    object jsonData = serializer.DeserializeObject(bodyText);
    return jsonData;

那么反序列化是在没有任何类型信息的情况下完成的吗?什么样的物体DeserializeObject返回?动态?它如何知道数据的类型?我希望将 protobuf-net 放在这里,但它显然需要一种类型来发挥其魔力!

我没有查看所有 MVC3 源代码,但我猜测到类型的映射发生在最后阶段,并且无法知道 ValueProviderFactories 中的类型?

我是否必须放弃并在行动上进行转换?


这里有几个问题。

For how JavaScriptSerializer你应该阅读的作品文档 http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx。该类尝试推断基本类型(int、bool、date 等)的类型并返回Dictionary<string, object>对于更复杂的情况。此外,如果 JSON blob 包含名为“__type”的特殊属性,则反序列化器将尝试创建该类型的对象。

现在介绍一下 MVC 中的工作原理。将请求中的值映射到控制器中使用的对象实例的过程称为模型绑定。它分为两个组件:ModelBinder 和 ValueProviders。模型绑定器知道目标类型(例如产品),尝试创建它的实例,然后使用请求中的值填充其属性。它通过询问 ValueProviders 来实现这一点。例如,要在 Product 实例上设置 Name 属性,它会向值提供者询问“Name”的值。值提供者按顺序查询并返回匹配项(来自查询字符串、发布数据、JSON 请求正文等)。

网络上有很多关于这方面的资源,但简而言之,价值提供者不应该真正关心类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建需要类型信息的 MVC3 ValueProviderFactories? 的相关文章

  • Inno Setup:验证是否已安装 .NET 4.0

    我有一个需要 NET 4 0 才能运行的组件 我的 Inno Setup 安装程序如何验证它是否已安装 如果没有 则提示用户安装它 The InitializeSetup运行 Inno Setup 可执行文件时调用该函数 为自定义脚本插入此
  • 带有整数字符串的枚举

    我有一个公众号enum像这样 public enum occupancyTimeline TwelveMonths FourteenMonths SixteenMonths EighteenMonths 我将用它来DropDown菜单如下
  • Html Helper“操作”未定义,Asp.NET Core 2.2

    我是 ASP NET Core MVC 的新手 我会在这个问题前说我已经阅读了其他类似的问题 但它们与我遇到的问题并不完全相同 我正在尝试实现动态左侧导航 其中每个按钮都是从我的数据库加载的 当我打电话时 Html Action NavMe
  • 合并两个(或更多)PDF

    背景 我需要为我的销售人员提供每周报告包 该包包含几个 5 10 个水晶报告 Problem 我想允许用户运行所有报告并且只运行单个报告 我想我可以通过创建报告然后执行以下操作来做到这一点 List
  • 如何证明 .NET CLR JIT 每次运行只编译每个方法一次?

    There s 一个老问题 https stackoverflow com questions 1255803 does the net clr jit compile every method every time 1255832每次询问
  • MS Teams 应用程序:访问此应用程序时出现问题

    The users on MS Teams desktop reported multiple issues with our MS Teams app They see the following error on MS Teams De
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • 我如何将整数列表添加到路由

    我正在尝试将 int 数组添加到我的 Url Action 中 如下所示 var routeData new RouteValueDictionary for int i 0 i lt Model GroupsId Length i rou
  • 使用 JSON.net 反序列化

    我对 json JSON net 等都很陌生 在这里阅读类似的问题后 我无法让我的代码工作 我的错误到底是什么 我监督了什么 出于测试目的是否可以跳过 链接 和 元 类 或者我是否必须定义每个属性 我得到以下 REST 输出 codes h
  • smtpclient“发送邮件失败”

    这是我的代码 for int i 0 i lt number i MailAddress to new MailAddress iMail to MailAddress from new MailAddress iMail from iMa
  • System.Web.Caching.Cache 在模型中抛出 null 异常

    也许这个问题应该很简单 但事实并非如此 我读过了在 ASP NET 中使用 System Web Caching Cache 类时出现问题 https stackoverflow com questions 531014 problem u
  • 如何将 .NET 控制台应用程序转换为 Winforms 或 WPF 应用程序

    我经常从一个简单的控制台应用程序开始尝试一个想法 然后创建一个新的基于 GUI 的项目并将代码复制进去 有更好的方法吗 我可以轻松转换现有的控制台应用程序吗 只需添加一个新的Winform 将以下代码添加到您的Main Applicatio
  • 单个控制器站点的 ASP.NET MVC 路由

    我正在尝试创建一个简单的网站 基本上它有一个控制器Home控制器 该控制器有一个动作Index需要一个string作为参数 这是一个目录 并使用该 目录 来完成其工作 我不知道如何创建一个通用的捕获所有路由 将每个 URL 发送到此一个操作
  • 当您在 .net 项目中添加 dll 的引用时会发生什么

    我在 net 中有一个类库项目 名为 A 构建时将创建一个 dll 即 A dll 我有另一个项目 B 该项目包含 dll A dll 的引用 当我在 B 中添加 A 的引用时到底会发生什么 谁能告诉我在编译时和运行时会发生什么 编译器将
  • asp.net mvc 文件流结果

    问题的第一部分 我在数据库中有信息 我想从数据库获取它并将其另存为 txt文件给客户端 我已经用常规的 asp net 完成了它 但在mvc中还没有 我的信息不是图像 这些关于人民的信息 我看着这个网站 http www mikesdotn
  • ASP.NET MVC3 应用程序可以在不更改特定代码的情况下托管在云中吗?

    我使用以下方法创建了一个 ASP NET Web 应用程序 ASP NET MVC 3 网络表单 Linq 到 SQL MS SQL Server 数据库 WCF 需要做什么才能将其托管在云服务上 我是否应该将其转换为 Azure 应用程序
  • WebClient.DownloadDataAsync 冻结了我的 UI

    我在 Form 构造函数中的 InitializeComponent 之后有以下代码 using WebClient client new WebClient client DownloadDataCompleted new Downloa
  • 是否可以从 C++ 应用程序调用 C# 应用程序?

    我是一名编程学生 现在我已经上了两门 C 课程 这个学期我将参加我的第一门 C 课程 出于好奇 是否可以从 C 应用程序调用 C 应用程序 如果是的话 是否还可以检查运行该程序的计算机是否具有 NET框架 我只是很好奇 我想如果可能的话 这
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

    我正在 ASP NET MVC 中开发我的第一个应用程序 但遇到了一个我无法解决的问题 即使在阅读了整个互联网之后也是如此 因此 我有几个使用视图模型创建的视图 它们是报告 这些视图模型是根据用户选择标准填充的 我正在尝试构建一种接受模型并
  • 调试VS 2005提示“操作不支持”

    我一直在调试 VS 2005 并将 启动外部程序 设置为 C Program Files Microsoft Visual Studio 10 0 Common7 IDE devenv exe 但按 F5 后出现此错误 尝试运行项目时出错

随机推荐