Я только что обновился до VS2010 (rc) и впоследствии был вынужден обновить мои проекты и преобразовать их в MVC2 (т.е. Microsoft) ..., который уничтожил первое приложение, которого коснулся.
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 я немного брошен. Кто-нибудь? * * 1004
У меня есть (в комплекте)
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 это .net 3.5
(ASP.NET MVC 2 RC 2 предоставляет новую платформу Model-View-Controller (MVC) поверх существующей среды выполнения ASP.NET 3.5 SP1.)
Код около 51
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;
}
}
Когда код был написан для MVC (1) в VS2008 this.ValueProvider был "IDictionary ControllerBase.ValueProvider.
В MVC (2) VS2010 он бросает шипение при использовании где, хотя это, видимо, хорошо.
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;
}
}
}
Если не безобразный кусок кода; Legacy Code - это очень весело