Использование констант условной компиляции для управления JavaScript, испускаемым представлением MVC3 - PullRequest
0 голосов
/ 24 июля 2011

Я выяснил, что в разметке Razor можно использовать условные директивы и константы компилятора. Я хотел бы знать, есть ли способ условно выдавать текст JavaScript, используя эти директивы, как я пытаюсь сделать ниже:

@section BodyPanelScript
{
    <script type="text/javascript">
        $(function () {
            $(":password").val(null);

            // Back up current names of package radio buttons, then make all their names the same for grouping.
            $("#package-selector :radio[name$='.IsSelected']").each(function () {
                $(this).attr("oldname", $(this).attr("name"));
            });
            $("#package-selector :radio[name$='.IsSelected']").attr("name", "Package.IsSelected");

            // Hook the 'submit' click to restore original radio button names.
            $("form#register :submit").click(function () {
                $(":radio[name='Package.IsSelected']").each(function () {
                    $(this).attr("name", $(this).attr("oldname"));
                });
            });

        });    
    </script>
    @{
#if AUTO_FILL_REG
        <text>
        <script type="text/javascript">
            $(function () {
                $(":password").val("123456");
            });    
        </script>
        </text>
#endif
    }
}

Константа AUTO_FILL_REG определена в моей конфигурации Debug и говорит контроллеру заполнить модель регистрации значениями по умолчанию, поэтому мне не всегда нужно заполнять форму для проверки процесса. Существующие значения в модели игнорируются в поле пароля, поэтому я прибегаю к некоторому JavaScript, чтобы заполнить это поле. Я бы хотел, чтобы этот JavaScript был условно выдан, но несколько попыток, таких как приведенный выше код, приводят к буквальному отображению текста #if...#endif и заполнению пароля, либо к выводу ничего, независимо от конфигурации сборки.

1 Ответ

2 голосов
/ 24 июля 2011

Это не особенно элегантное решение, но оно простое. Вы можете создать простой класс, подобный этому

public static ConditionalValue {
  public static bool AUTO_FILL_REG {
    get {
#if DEBUG
      return true;
#else
      return false;
#endif 
    }
  }
}

, а затем просто укажите это в вашем aspx. Это только один пример того, где вы можете разместить это свойство. Вы могли бы сделать это как константы, но вы поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...