Я выяснил, что в разметке 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
и заполнению пароля, либо к выводу ничего, независимо от конфигурации сборки.