Kei*_*eau 9 asp.net-mvc modelbinders asp.net-mvc-2
我正在尝试将我的MVC 1项目升级到MVC 2 RC.我们目前有一个自定义模型绑定器,它将项目添加到ValueProvider(这在字典时起作用).然后我们将其传递给默认的模型绑定器.但是,IValueProvider没有add方法,因此该算法不再有效.有谁知道在MVC 2中为ValueProvider添加值的方法?
foreach(string valKey in controllerContext.RequestContext.HttpContext.Request.Form.AllKeys.Where(x => x.StartsWith(valuesToChangePrefix)))
{
string valName = valKey.Substring(valuesToChangePrefix.Length);
string myVal = ManipulateValue(bindingContext.ValueProvider.GetValue(valKey).AttemptedValue);
// This is where I need to add to my value Provider (As you can see I used to just assign a ValueProviderResult
//bindingContext.ValueProvider = new ValueProviderResult(myVal.Split(','), myVal, bindingContext.ValueProvider.GetValue(valKey).Culture);
}
Run Code Online (Sandbox Code Playgroud)
问题是,当您到达 ModelBinder 时,您的 ValueProvider 已经设置完毕。以前,您可以在此时向 ValueProvider 添加值。
为了提供自定义ValueProvider,您需要重写ControllerActionInvoker,这是最终的解决方案。不幸的是,ControllerActionInvoker 是由 Controller 对象创建的,而不是被注入的。因此,你还需要重写Controller来调用你自己的ControllerActionInvoker。
| 归档时间: |
|
| 查看次数: |
3118 次 |
| 最近记录: |