【问题标题】:Upgrading to ASP.NET MVC 2 - formCollection.ToValueProvider()升级到 ASP.NET MVC 2 - formCollection.ToValueProvider()
【发布时间】:2010-08-20 07:35:10
【问题描述】:

我收到以下错误:

无法将类型 IValueProvider 隐式转换为 IDictionary

当我尝试运行以下代码时:

IDictionary<string, ValueProviderResult> valueProvider = formValues.ToValueProvider();
foreach (string k in formValues.Keys)
{
    ModelState.SetModelValue(k, valueProvider[k]);
}

谁能帮忙?

【问题讨论】:

    标签: c# asp.net-mvc-2


    【解决方案1】:

    当我使用 .NET 4.0 时,我必须这样做:

    IValueProvider valueProvider = formValues.ToValueProvider();
    foreach (string k in formValues.Keys)
    {
        ModelState.SetModelValue(k, valueProvider.GetValue(k));
    } 
    

    我要感谢@abatishchev 指出差异。

    【讨论】:

    • 最好删除这个你的答案并编辑你原来的问题
    • 真的吗?我认为最好有一个问题的答案?
    • 对不起,我只是不明白这是您自己对您的问题的回答!很高兴听到您找到了解决方案。立即批准
    【解决方案2】:

    您进行第二次多余的字典查找:

    foreach (KeyValuePair<string, ValueProviderResult> pair in formValues)
    {
        ModelState.SetModelValue(pair.Key, pair.Value);
    }
    

    很奇怪!

    3.5 ToValueProvider() 返回IDictionary&lt;string, ValueProviderResult&gt;

    但在4.0 - 它返回IValueProvider

    【讨论】:

    • @dean:你的演员有什么结果吗?
    猜你喜欢
    • 2012-11-30
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 2010-12-18
    • 1970-01-01
    • 2014-08-12
    • 2014-11-11
    相关资源
    最近更新 更多