簡體   English   中英

根據請求的視圖更改href

[英]Change href based on requested view

我試圖弄清楚如何根據請求的視圖更改_layout.cshtml上的鏈接。

當我在首頁/索引上時,我希望href為'#Unhealthy',但是在其他任何頁面上時,我希望它重定向回首頁'/ Home / Index /#Unhealthy'

在其他頁面上時

<li>
  <a href="/Home/Index/#Unhealthy"><i class="fa fa-warning warning"></i></a>
</li>

在家/索引上時

<li>
  <a href="#Unhealthy"><i class="fa fa-warning warning"></i></a>
</li>

如何確定請求的視圖以交換該值?

*注意:我想如果我不能在服務器上執行此操作,則始終可以使用javascript / jquery更改值

如果您使用的是MVC,請使用razor,因為我標記了MVC,所以我做了這個回答。 如果您正在執行MVC應用程序,則這是迄今為止最好的方法,不需要任何JavaScript。

@if (window.location.pathname == "/"){
<li>
  <a href="#Unhealthy"><i class="fa fa-warning warning"></i></a>
</li>
}
else{
<li>
  <a href="/Home/Index/#Unhealthy"><i class="fa fa-warning warning"></i></a>
</li>
}

如果您確實想用jQuery的方式做到這一點:

jQuery:

$( document ).ready(function() {   
  if (window.location.pathname == "/"){ 
   $("#Link").prop("href", "#Unhealthy")
  }
  else {
    $("#Link").prop("href", "/Home/Index/#Unhealthy")
  }
});

的HTML:

<li>
  <a id="Link" href="#"><i class="fa fa-warning warning"></i></a>
</li>
@{
    var controller = ViewContext.RouteData.Values["controller"].ToString().ToLower();
    var action = ViewContext.RouteData.Values["action"].ToString().ToLower();
}

<li><a href="@(controller == "home" && action == "index" ? "#Unhealthy" : "/Home/Index/#Unhealthy")"><i class="fa fa-warning warning"></i></a></li>

喬什·史蒂文斯(Josh Stevens)的答案應該可以使用MVC剃刀代碼工作,但是可以使用@ Html.ActionLink重載在每個頁面上使用相同的代碼。

快速搜索發現此鏈接是舊語法但概念正確

未經測試嘗試

@ Html.ActionLink(“鏈接文本”,“索引”,“首頁”,null,null,“不健康”,null,null)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM