根据url的性质控制内容的显示 - MVC / HTML / ASP / JS

时间:2012-08-10 14:42:05

标签: c# javascript asp.net html asp.net-mvc

我有两个网站..(MVC应用程序)

www.WebsiteA.com(其中有两个标签)就像这样......在“.master”页面中。

   <ul id="module" class="module">       

        <li id="home"><%=Html.ActionLink("Home", "ActionHome", "Home")%></li>
        <li id="Pay"><%=Html.ActionLink("Payment", "ActionPay", "Payment")%></li>

    </ul>

如果有人直接访问网站www.websiteA.com,这是他们应该看到的,两个标签,Home和Payment。

还有另一个网站可以说www.WebsiteB.com在其中一个页面中有这个iframe。 Iframe基本上指向第一个网站A.

这是B网站www.websiteB.com/linktoWebsiteA

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <iframe src="http://www.websiteA.com"</iframe>

</asp:Content>

我的问题是:当有人直接访问网址(www.websiteA.com)时,如何让网站A显示两个标签?如何在访问网站时显示“只有一个标签”(主页标签)网站通过网站B中的iframe。 iframe内的网站A应仅显示“主页”选项卡。感谢您的想法/帮助。

1 个答案:

答案 0 :(得分:3)

您可以在从iframe调用时传递查询字符串参数:

<iframe src="http://www.websiteA.com/?iframe=true"</iframe>

然后使用iframe查询字符串参数显示所需的标签:

<ul id="module" class="module">       
    <li id="home"><%=Html.ActionLink("Home", "ActionHome", "Home")%></li>
    <% if (!string.IsNullOrEmpty(Request["iframe"])) { %>    
        <li id="Pay"><%=Html.ActionLink("Payment", "ActionPay", "Payment")%></li>
    <% } %>
</ul>

另一种可能性是使用javascript,因为如果您不想传递一些额外的指示(例如查询字符串参数),这是了解网站是否在iframe内运行的唯一方法。

<script type="text/javascript">
    if (top !== self) { 
        // running inside an iframe => hide the tabs you don't want
    }
</script>