промежуточное программное обеспечение по сравнению с процессором контекста для зависимой навигации/дисплея представления

Вы могли использовать более универсальный преобразователь

public class EnumBooleanConverter : IValueConverter
{
  #region IValueConverter Members
  public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {
    string parameterString = parameter as string;
    if (parameterString == null)
      return DependencyProperty.UnsetValue;

    if (Enum.IsDefined(value.GetType(), value) == false)
      return DependencyProperty.UnsetValue;

    object parameterValue = Enum.Parse(value.GetType(), parameterString);

    return parameterValue.Equals(value);
  }

  public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {
    string parameterString = parameter as string;
    if (parameterString == null)
        return DependencyProperty.UnsetValue;

    return Enum.Parse(targetType, parameterString);
  }
  #endregion
}

, И в XAML-части Вы используете:

<Grid>
    <Grid.Resources>
      <l:EnumBooleanConverter x:Key="enumBooleanConverter" />
    </Grid.Resources>
    <StackPanel >
      <RadioButton IsChecked="{Binding Path=VeryLovelyEnum, Converter={StaticResource enumBooleanConverter}, ConverterParameter=FirstSelection}">first selection</RadioButton>
      <RadioButton IsChecked="{Binding Path=VeryLovelyEnum, Converter={StaticResource enumBooleanConverter}, ConverterParameter=TheOtherSelection}">the other selection</RadioButton>
      <RadioButton IsChecked="{Binding Path=VeryLovelyEnum, Converter={StaticResource enumBooleanConverter}, ConverterParameter=YetAnotherOne}">yet another one</RadioButton>
    </StackPanel>
</Grid>
7
задан Community 23 May 2017 в 11:43
поделиться

1 ответ

Устанавливать переменные по запросу в промежуточном программном обеспечении вполне допустимо - я делаю это все время.

Для этого невозможно использовать process_response , поскольку к тому времени шаблон уже отрисован - на этом этапе все, что вы получаете, это HttpResponse , содержащий кучу HTML.

Альтернативой может быть обернуть render_to_response вашей собственной функцией, которая принимает контекст вместе с запросом и шаблоном и при необходимости изменяет его перед передачей фактической функции рендеринга. Это дает преимущество в изменении фактического контекста, но недостаток в том, что вы должны помнить о вызове его в каждом представлении вместо функции по умолчанию.

4
ответ дан 7 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: