TempDataExtensions от зимы 2007 года --- все еще нужны в MVC2? - PullRequest
0 голосов
/ 31 июля 2010

Эта чрезвычайно классная статья , написанная зимой 2007 года, показывает мне этот код:

public static class TempDataExtensions
{
  public static void PopulateFrom(this TempDataDictionary tempData, object o)
  {
    foreach (PropertyValue property in o.GetProperties())
    {
      tempData[property.Name] = property.Value;
    }
  }

  public static void PopulateFrom(this TempDataDictionary tempData
    , NameValueCollection nameValueCollection)
  {
    foreach (string key in nameValueCollection.Keys)
      tempData[key] = nameValueCollection[key];
  }

  public static void PopulateFrom(this TempDataDictionary tempData
    , IDictionary<string, object> dictionary)
  {
    foreach (string key in dictionary.Keys)
      tempData[key] = dictionary[key];
  }

  public static string SafeGet(this TempDataDictionary tempData, string key)
  { 
    object value;
    if (!tempData.TryGetValue(key, out value))
      return string.Empty;
    return value.ToString();
  }
}

Я не вижу такого кода в исходном коде MVCContrib или в исходном коде MVC2. Это заставляет меня думать, что я все еще могу использовать этот шаблон сейчас, не опасаясь эквивалентной функциональности, уже существующей в текущем выпуске MVC2 (возможно, в MVC3 Preview 1?).

Я не видел обновления правок статьи. Этот код MVC от 2007 года выдерживает испытание временем? Это все еще готово сейчас?

1 Ответ

1 голос
/ 31 июля 2010

Да, это будет работать, и эта функциональность не будет заменена.

Одна оговорка. В MVC 1 данные Temp сохранялись только для одного запроса. С MVC 2 tempdata теперь остается до тех пор, пока вы не получите к нему доступ или не очистите его вручную. Это может усложнить ситуацию, если ваше перенаправление не удастся или никогда не прочитает временные данные.

Новое динамическое ключевое слово также обеспечит аналогичную функциональность, возможно, новый новый динамический тип C # 4.0 может немного привести в порядок.

...