У меня есть веб-сайт, написанный на ASP.NET MVC, и мне задан параметр для рассматриваемой страницы, который указывает, что представляет собой предыдущая страница. Это объясняется тем, что, когда пользователь щелкает изображение с определенной страницы, загруженная страница автоматически устанавливает соответствующий флажок, используя javascript (в частности, jQuery).
Вот код, который получает и устанавливает параметр:
<script type="text/C#" runat="server">
protected string Referrer = string.Empty;
protected override void OnLoad(EventArgs e)
{
try
{
Referrer = Request.UrlReferrer.Segments[2].ToLower();
}
catch (System.Exception)
{
Referrer = string.Empty;
}
base.OnLoad(e);
}
</script>
Далее, вот коллекция флажков:
<div id="interestSelect1" class="interestPad">
<%= Html.CheckBoxFor(model => model.Interests[0])%>
<label for="Interests_0_">Insulation</label>
<%= Html.CheckBoxFor(model => model.Interests[1])%>
<label for="Interests_1_">Windows</label>
<%= Html.CheckBoxFor(model => model.Interests[2])%>
<label for="Interests_2_">Siding</label>
<%= Html.CheckBoxFor(model => model.Interests[3])%>
<label for="Interests_3_">Roofing</label>
</div>
<div class="clear">
</div>
<div id="interestSelect2" class="interestPad">
<%= Html.CheckBoxFor(model => model.Interests[4])%>
<label for="Interests_4_">Gutters/Protection</label>
<%= Html.CheckBoxFor(model => model.Interests[5])%>
<label for="Interests_5_">Patio Doors</label>
</div>
При отображении в браузере, вот как выглядит каждый из флажков:
<input id="Interests_0_" name="Interests[0]" type="checkbox" value="true" />
<input name="Interests[0]" type="hidden" value="false" />
<label for="Interests_0_">Insulation</label>
Вот JavaScript, который я использую, который не работает:
<script type="text/javascript">
var ref = '<%= Referrer %>';
$(document).ready(function () {
switch (ref) {
case "insulation":
$('Interests_0_').attr('checked', 'checked');
break;
case "windows":
$('Interests_1_').attr('checked', 'checked');
break;
case "siding":
$('Interests_2_').attr('checked', 'checked');
break;
case "roofing":
$('Interests_3_').attr('checked', 'checked');
break;
case "gutters":
$('Interests_4_').attr('checked', 'checked');
break;
case "patiodoors":
$('Interests_5_').attr('checked', 'checked');
break;
default:
// do nothing, not valid ref
}
});
</script>
Я, очевидно, делаю что-то совершенно не так, кто-нибудь может указать мне правильное направление?
Спасибо!
РЕДАКТИРОВАТЬ: Похоже, еще один файл JS, который был на MasterPage, который был вызван до того, как мой блок JS заставлял флажки не проверяться. Основной проблемой было забыть идентификатор #
.