【问题标题】:Custom model binder: how to determine sub class自定义模型绑定器:如何确定子类
【发布时间】:2014-03-14 23:02:12
【问题描述】:

我在控制器的 POST 操作上有一个自定义模型绑定器:

public ActionResult Detail(IProduct model)

Detail实际上是传递了一个FooProduct,它继承自Product: IProduct

在模型绑定器中我有 BindModel() 方法

bindingContext.ModelType 是IProduct

当我检查 ControllerContext 或 BindingContext 时,我找不到任何可以让我知道 IProduct 的具体类型是 FooProduct 还是 BarProduct 的信息。

我怎样才能找到这个?

我可以解决这个问题,但我很好奇应该如何正确解决它。

【问题讨论】:

  • 使用bindingContext.Model.GetType()?
  • @khillang .Model = null

标签: asp.net-mvc


【解决方案1】:

你只有两个选择:

1) 向您的请求添加一个附加字段(查询字符串、表单字段...),以标识模型的类型。

2) 检查所有字段并尝试找出指定值所需的子类。

binder 本身除了请求和请求的类型(IProduct)之外没有其他信息,因此您必须根据此输入做出决定。

【讨论】:

  • 大声笑,这些是我的解决方法。那就这样吧。感谢您的帮助。
  • 你也可以制作一个通用控制器并使用多个路由。
猜你喜欢
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多