2010-03-13 2 views
1

Я сейчас изучаю ASP.NET MVC и заметил, что в приложении ASP.NET MVC, которое по умолчанию создается Visual Studio, ссылки «Главная» и «О программе» остаются активными, когда пользователь находится в «Доме» и «О странице» соответственно, и после нажатия на страницу текущей страницы ссылка перезагружается сама.Как отключить ссылки на текущую страницу в ASP.NET MVC?

Каков правильный подход к отключению ссылки, указывающей на страницу, пользователь уже включен?

Как это сделать, не нарушая подход ASP.NET MVC?

ответ

3

«Отключение» в терминах html - это просто удаление тега href. Здесь не может быть никакой asp-net-mvc-magic. вам нужно отобразить свое меню таким образом, чтобы href устанавливал значение «» для текущей страницы.

Для получения дополнительной информации, я бы рекомендовал вам обратиться «Pro ASP.NET MVC Framework» книга, глава 5.

+0

Спасибо за рекомендации очень полезной главы из книги! – rem

1

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

Пример:

<script type="text/javascript"> 
    $('#HomeLink').click(function(e) { 
     e.preventDefault(); 
     return false; 
    }); 
</script> 

Контроль элементов пользовательского интерфейса должны быть сохранены в представлении в любом случае, ИМО.

2

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

В противном случае, если вы не хотите, чтобы ваш пользователь обновлял страницу, вы должны полностью удалить ссылку (или <li /> или что-то еще), чтобы в контексте приложения понятие обновления страницы не существовало, вместо этого для указания текущей выбранной страницы отключенной ссылкой используйте явный заголовок.

Для достижения этого результата, можно использовать следующее:

$("#menu").find('*[href]').each(function(index) { 
    if ($(this).attr("href") == window.location.pathname) { 
     $(this).parents("li").html(""); 
    } 
}); 

Если вам нужно сохранить элемент видимым, просто удалите HREF:

$("#menu").find('*[href]').each(function(index) { 
    if ($(this).attr("href") == window.location.pathname) { 
     $(this).removeAttr("href"); 
    } 
}); 

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