ValueProviderDictionary

ValueProviderDictionary

据我所知 ValueProviderDictionary 从 3 个地方获取绑定(bind)值

  • 来自 Post 表单
  • 来自 Route 值
  • 来自查询字符串

  • 我希望能够禁用第二个和第三个选项。我在这里看到的唯一解决方案是创建我自己的自定义 ValueProvider(复制粘贴 ValueProviderDictionary 源文件并从那里删除这两个选项)。

    这个解决方案正确吗?有没有更优雅的选择?

    (如果带有自定义 ValueProvider 的解决方案正确,应该在哪里初始化?在 Controller 的 action 方法中还是在自定义 ModelBinder 中?)

    谢谢

    最佳答案

    覆盖 Controller.Initialize() 并在该方法中设置 ValueProvider 属性(在调用 base.Initialize() 之后)。

    为了避免重新实现整个 ValueProviderDictionary,您可以将其子类化。唯一有趣的部分是您必须复制一小段 ValueProviderDictionary.PopulateDictionary()。在您的构造函数中,调用基本构造函数,然后立即调用 this.Clear(),然后调用 this.YourCustomPopulateDictionary()。这应该会使您的代码更小。

    关于asp.net-mvc - 如何禁用 ASP.NET MVC 中路由值的绑定(bind)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1314359/

    10-12 17:10