无法将带有[]的索引应用于类型为"System.Web.Mvc.IValueProvider"的表达式

hnc*_*ncl 2 asp.net-mvc asp.net-mvc-2

我正在将ASP.NET MVC应用程序转换为ASP.NET MVC 2,我收到以下错误:

无法将带有[]的索引应用于类型为"System.Web.Mvc.IValueProvider"的表达式

这是代码:

public static void AddRuleViolation(this ModelStateDictionary modelState,
                                    RuleViolation error, 
                                    FormCollection collection)
{
    modelState.AddModelError(error.PropertyName, error.ErrorMessage);
    modelState.SetModelValue(error.PropertyName, 
                             collection.ToValueProvider()[error.PropertyName]);
}
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

p.c*_*ell 6

ASP.NET MVC 1和2之间的实现发生了变化IValueProvider.

尝试使用该GetValue()方法而不是通过索引引用它.

collection.ToValueProvider().GetValue(error.PropertyName)
Run Code Online (Sandbox Code Playgroud)