@ Html.ActionLink的片段部分重载方法链接到选项卡页面的一部分

时间:2016-02-01 14:54:47

标签: asp.net-mvc razor actionlink

我正在开发一个ASP.NET MVC Web应用程序。

在我的一个页面上,我标记了如下信息:

Tabbed Content

我的ActionLink看起来像这样:

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

现在,当我将鼠标悬停在我的应用程序中的链接上时,它具有正确的InternID和片段语法,但是当我点击它时,它会将我发送到显示“申请人配置文件”的选项卡,而不是“文档”。

当我将鼠标悬停在“文档”标签上时,它与我在我的应用程序中悬停我的actionlink时的网址相同。

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:1)

简单地将片段附加到URL并不会激活特定选项卡。 JavaScript" tab"库只是利用片段进行优雅降级:如果未启用JavaScript,请单击"选项卡"由于页面锚点的工作方式,会跳转到标签内容所在页面的右侧部分。但是,您有责任检查URL中的片段(如果存在)并激活相应的选项卡。如何激活标签取决于您的特定解决方案,但您尚未向我们提供任何相关信息。

答案 1 :(得分:1)

除了Chris Patt的回答。

您需要明确启用所需的特定选项卡。

首先,您需要在您的网址查询字符串中再传递一个参数,以表示要选择的标签。

@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值为"#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>
相关问题