2016-02-01 2 views
0

Я разрабатываю веб-приложение ASP.NET MVC.Часть фрагмента @ Html.ActionLink перегруженного метода для ссылки на часть страницы с вкладкой

На одном из моих страниц я вкладки информации, которая выглядит следующим образом:

Tabbed Content

Моего ActionLink выглядит следующим образом:

@Html.ActionLink("Back to Details", "RecordView", "ApplicantRecords", null, null, "Documents", new { id = Model.InternID }, null)

Теперь, когда я наведите курсор мыши на ссылку в моем приложении он имеет правильный синтаксис с InternID и фрагментом, но когда я нажимаю на него, он отправляет меня на вкладку, в которой говорится «Профиль кандидата», а не «Документы».

Когда я наводил курсор на вкладке «Документы», он имеет тот же URL-адрес, что и при наведении моего действия в приложении.

Есть ли способ исправить это?

+0

ли 'RecordView' вашего метода действий, который показывает все три вкладки? Где у вас есть ссылка «Назад к деталям»? – Shyju

+0

Record View - это действительно действие, на которое я перенаправляюсь на контроллер ApplicantRecords. –

+0

Ты еще не ответил на мой вопрос. Где ваша ссылка «назад к деталям»? На какой странице (Action) есть все три вкладки? – Shyju

ответ

1

В дополнение к ответу Криса Патта.

Вам необходимо явно включить нужную вкладку.

Сначала вам нужно передать еще один параметр в вашем запросе url, чтобы представить, какую вкладку выбрать.

@Html.ActionLink("Back to Details", "RecordView", "ApplicantRecords", 
             new { id = Model.InternID ,tab="documents" }, null) 

и в методе действия RecordView(), вы будете принимать это, установите его в ViewBag, так что вы можете прочитать его на ваш взгляд, как бритва.

public ActionResult RecordView(int id,string tab="profile") 
{ 
    ViewBag.CurrentTab = tab; 
    return View(); 
} 

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

$(function() { 

    var tab = "@ViewBag.CurrentTab"; 
    $('.nav-tabs a[href=#'+tab+']').tab('show'); 

}); 

Если предположить, что HREF значения вкладки Link является "#profile" и "#documents"

<ul class="nav nav-tabs" role="tablist"> 
    <li role="presentation" class="active"> 
     <a href="#profile" aria-controls="Profile" role="tab" data-toggle="tab">Profile</a> 
    </li> 
    <li role="presentation"> 
     <a href="#documents" aria-controls="documents" role="tab" data-toggle="tab">Docs</a> 
    </li> 
</ul> 
+0

, так что вот мое действие в настоящее время: '@Html.ActionLink («Back to Details», «RecordView», «ApplicantRecords», new {id = Model.InternID, tab = "Documents"}, null) '... мое действие теперь' public ActionResult RecordView (int? Id, строка вкладка = "подробности") { ViewBag.CurrentTab = вкладка; '... на мой взгляд, я добавил

1

Простое добавление фрагмента к URL-адресу не делает ничего, чтобы активировать определенную вкладку. Библиотеки «tab» JavaScript просто используют фрагменты для изящного деградации: если JavaScript не включен, щелчок по «вкладке» переместит вас в нужную часть страницы, на которой находится содержимое вкладки, из-за того, что работают ссылки на страницы. Однако вы несете ответственность за проверку фрагмента в URL-адресе, если он существует, и активирование соответствующей вкладки. Как активировать вкладку зависит от вашего конкретного решения, которое вы не предоставили нам никакой информации.

+0

, поэтому, когда я нажимаю «назад к деталям», link .. ему нужно активировать вкладку «Документы». что вам нужно, чтобы увидеть, что может помочь мне активировать вкладки? –

+0

благодаря вам и @Shyju я смог получить эту работу. спасибо за совет –