首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC到MVC2错误

MVC到MVC2错误
EN

Stack Overflow用户
提问于 2010-03-01 11:07:32
回答 1查看 1.2K关注 0票数 2

我刚刚更新到VS2010 (rc),随后被迫更新我的项目,并转换为MVC2 (ta微软).这破坏了第一款触碰到的应用程序。

代码语言:javascript
复制
Error   2   'System.Web.Mvc.IValueProvider' does not contain a definition for
'Where' and no extension method 'Where' accepting a first argument of type 
'System.Web.Mvc.IValueProvider' could be found (are you missing a using directive or an 
assembly reference?)    ~\Controllers\DiscountsController.cs    51  39  ODSe

考虑到我知道这在VS2008 - MVC1中是可行的,我简直是一塌糊涂。有没有人?

我目前有(包括)

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using ODSe.Models;
using System.Text;
using System.Text.RegularExpressions;
using System.Net.Mail;

不应该是.net 4,因为最初的项目是3.5;MVC2 is .net 3.5 (ASP.NET MVC 2 RC2在现有的ASP.NET 3.5 SP1运行时之上提供了一个新的模型-视图-控制器(MVC)框架)。

码约51

代码语言:javascript
复制
foreach (var x in this.ValueProvider.Where(k => k.Key.StartsWith("discount.")))
{
   if (String.IsNullOrEmpty(x.Value.AttemptedValue))
   {
     ModelState.SetModelValue(x.Key, new ValueProviderResult(ValueProvider[x.Key].AttemptedValue, collection[x.Key], System.Globalization.CultureInfo.CurrentCulture));
                        Discount = true;
   }
}

在VS2008 this.ValueProvider中为MVC(1)编写的代码是"IDictionary ControllerBase.ValueProvider“,而在MVC(2) VS2010中,它很适合在显然很好的地方使用。

代码语言:javascript
复制
foreach (var x in this.ValueProvider)
                    {
                        if (x.Key.StartsWith("discount."))
                        {
                            if (String.IsNullOrEmpty(x.Value.AttemptedValue))
                            {
                                ModelState.SetModelValue(x.Key, new ValueProviderResult(ValueProvider[x.Key].AttemptedValue, collection[x.Key], System.Globalization.CultureInfo.CurrentCulture));
                                Discount = true;
                            }
                        }
                    }

如果不是一个令人讨厌的代码;遗产代码是非常有趣的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-01 12:14:24

IValueProvider不扩展IEnumerable<T>,所以像Where这样的LINQ扩展方法将不可用。

IValueProvider在MVC 2中是新的,所以您可能正在访问MVC 1中的IEnumerable<T>属性。

你能在NewDiscountsController.cs 51提供代码吗?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2355326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档