2017-04-03 1 views
0

Der Versuch, JS zu verwenden, um eine Teilansicht basierend auf der URL zu rendern ... Dies funktioniert fast, aber ich kann nicht Razor-Syntax in der PathRoot Var verwenden, also versuchte ich es zu entkommen es macht nicht ... Irgendwelche Ideen würden sehr geschätzt werden.Wie Render Teilansicht von JS im Layout

<head> 
 
    <script> 
 
      var SiteUrl = window.location.hostname;    
 
      var FloodlightPathRoot = '@@Html.Partial("~/Views/shared/FloodlightTags/' ; 
 
      var FloodlightEnd = '");'; 
 
      switch (SiteUrl) { 
 
       case "www.website.com": 
 
        var FloodlightFilePath = "first.cshtml"; 
 
        break; 
 
       case "www.website2.com": 
 
        var FloodlightFilePath = "second.cshtml"; 
 
        break; 
 
      } 
 
      var FloodFull = (FloodlightPathRoot + FloodlightFilePath + FloodlightEnd); 
 
      $('head').append(FloodFull); 
 
    </script> 
 
</head>

Es schreibt die Rasierer-Syntax auf den Kopf, aber die Seite wurde bereits gemacht. Kann ich die Rasierersyntax nach der Aktualisierung des Kopfes rendern?

<head> 
 
@Html.Partial("~/Views/shared/FloodlightTags/first.cshtml"); 
 
</head>

+2

'if (....) {@ Html.Partial ("... first.cshtml")} else {@ Html.Partial ("... second.cshtml"}} ' –

+0

Ich hatte das versucht, aber beide renderten gleichzeitig in der Quelle –

+0

Impossible - ein' if' Block erzeugt nur das eine oder das andere. –

Antwort

0

neben Stephen Antwort können Sie es wie folgt tun:

@{ 
    var url = new Uri(new Uri(this.Context.Request.Url.GetLeftPart(UriPartial.Authority)), Url.Content("~/")).ToString(); 
    if (url == "http://www.website.com/") 
    { 
     @Html.Partial("~/Views/shared/FloodlightTags/first.cshtml"); 
    } 
    else if (url == "http://www.website2.com/") 
    { 
     @Html.Partial("~/Views/shared/FloodlightTags/second.cshtml"); 
    } 
} 

var urlurl die Seite bekommen und dann wird es Wetter überprüft sie paßt http://www.website.com/ es, wenn so wird rendern first.cshtml sonst wird es die zweite Bedingung überprüfen.

+1

Es gibt keine Zugabe zu Stephens Antwort ... –

+0

das funktionierte für das, was ich brauchte, danke! –

+0

@MarioAntoci Willkommen bei StackOverflow, wenn irgendeine Antwort Ihnen hilft, die Antwort zu akzeptieren, wenn Sie nicht wissen, wie Sie das [how-do-akzeptieren-eine-Antwort-Arbeit] (https://meta.stackexchange.com/questions/5234/how-is-accepting-an-answer-Arbeit) – Usman

0

Bei der Verwendung von Code kann auf diese Weise getan

<head> 
    <script> 
    @{ 
     string path = Request.RequestUri.PathAndQuery; 
     if (path.Contains("www.website.com")) 
     { 
      @Html.Partial("~/Views/shared/FloodlightTags/first.cshtml"); 
     } 
     else if (path.Contains("www.website.com")) 
     { 
      @Html.Partial("~/Views/shared/FloodlightTags/second.cshtml"); 
     } 
    } 
</script> 
</head> 
Verwandte Themen