2010-08-20 143 views
4

我收到以下錯誤:升級到ASP.NET MVC 2 - formCollection.ToValueProvider()

Cannot implicitly convert type IValueProvider to IDictionary

當我嘗試運行下面的代碼:

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

誰能幫助?

回答

1

由於我使用.NET 4.0,我不得不這樣做:

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

我想要感謝@abatishchev指出差異。

+0

這是相當好刪除這個答案,並編輯您的原始問題 – abatishchev 2010-08-20 09:51:11

+0

真的嗎?我認爲最好有問題的答案? – ddd 2010-08-20 10:12:30

+0

對不起,我只是不明白這是你自己的問題的答案!很高興聽到您找到解決方案。現在批准它 – abatishchev 2010-08-20 12:55:35

0

你做第二,多餘的詞典查詢:

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

很奇怪!

3.5 ToValueProvider()返回 IDictionary<string, ValueProviderResult>

4.0

- 返回IValueProvider

+0

@dean:我更新了我的帖子。無論如何試圖施展 - 什麼結果? – abatishchev 2010-08-20 08:10:20

+0

@dean:你有鑄造結果嗎? – abatishchev 2010-08-20 09:51:26