我必须在绑定发生之前更改密钥(controllerContext.HttpContext.Request.Form
)。
这甚至可能吗?我重写了DefaultModelBinder的BindModel方法并尝试了controllerContext.HttpContext.Request.Form.Add()但它只是readonly。
我无法更改提交的html中的表单键。
例如
key:xxx_xxx_rownumber_cell
新密钥:模型[1] .Prop1
模型上也有一些数据转换,因此不应忽略验证。
答案 0 :(得分:1)
你可能在不久前找到了另一个解决方案,但是如果你还想这样做,你应该能够用这样的方式改变形式:
var collection = controllerContext.HttpContext.Request.Form;
PropertyInfo readOnly = collection.GetType().GetProperty("IsReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
readOnly.SetValue(collection, false, null);
// Your changes here.
readOnly.SetValue(collection, true, null);
答案 1 :(得分:0)
为什么不让你的action方法将FormCollection作为参数,然后手动绑定你需要它绑定?
另外,您也可以为特定类型创建自定义模型绑定器以利用此转换。我相信。
HTH。