【发布时间】:2018-07-31 08:07:32
【问题描述】:
我正在创建具有以下 url 的 API
/api/abc/?q=1&a=2&b=3&b=4
^^^^^^^
Input.cs(ModelBinding 中使用的类)
...
public string A { get; set; }
public string B { get; set; }
public string Q { get; set; }
...
我正在使用 .NET 的默认 ModelBinding,但问题是当我通过上面的 url 时,以下值被分配给属性
obj.A = "2" // here obj is object of Input class
obj.B = "3"
obj.Q = "1"
我期待 obj.B = "3,4"(当我执行 Request.QueryString["b"] 时,它的输出为 "3,4"),但它只绑定第一个值。
为什么会这样?(我不知道默认 ModelBinding 的内部结构,但我猜想它在某处使用 Request.QueryString 进行绑定)。
谁能告诉我为什么会这样?我怎样才能得到“3,4”作为 obj.B 值?
我为 B 获得“3,4”的方法是
使用自定义模型绑定器我已经完成以下操作
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
object model = base.BindModel(controllerContext, bindingContext);
var obj = model as Input;
obj.B = Request.QueryString["b"];
}
【问题讨论】:
标签: c# asp.net asp.net-mvc-4 model-binding custom-model-binder