在不同的链接点击上将不同的HTML代码加载到一个页面中

时间:2013-08-29 13:13:59

标签: html asp.net

所以,我的老板有这个疯狂的想法 - 整个网站在一个页面上工作。到目前为止 - 仍然可以,但这是事情: - 不同的页面具有不同的div s内容(像往常一样),当点击某个div(或链接)时,一些div会展开/折叠,以揭示不同内容的方式工作。那很好,但是......

  • 他不想使用JavaScript或任何东西来动态查看网站('因为我将在2周内离开而他和其他员工不具备JS,因此如果需要则无法改进/维护)

  • 他的想法是获取HTML代码,用于网站的所有页面变体,存储在数据库中,以及点击某些链接 - 使用特定HTML重新加载页面。因此,每个页面都没有不同的.html个文件,但对于所有页面只有一个。

问题是它适用于我最初加载的第一个页面,但是当我调用另一个页面时,它会被扭曲,因为我调用了函数,它检索HTML,但是之前加载的是另一个调用页面仍然存在,所以它再次调用。这是示例,所以您理解:

<script runat="server" type="text/C#">
        public string getPage(string name)
    {
        string page = "null";
        switch (name)
        {
            case "media":
                page = getMediaPage(); <!-- just function from the code-behind that retrieves the html code from the DB and passes it to the page -->
                break;
            case "home":
                page = getHomePage(); <!-- just function from the code-behind that retrieves the html code from the DB and passes it to the page -->
                break;                    
        }
        return page;
    }
    </script>
</head>
<body onload="addEvents();">
    <form id="form1" runat="server">
    <div id="parent">
        <div id="presentation">
            SomeCompany ApS&nbsp;&nbsp;&nbsp;Street3&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;CITY&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;INFO@Comapny.com&nbsp;&nbsp;&nbsp;TLF: 999999
        </div>

        <%=getPage("home") %>

    </div>
    </form>

这就是初始页面的方式,然后只是在parent div中我会为其他页面调用HTML。 HTML的一个例子,存储在DB中:

<div id="mainmenu">
            <b>HOME</b>
            <br />
            PRODUCTS
            <br />
            <a href="<%=getPage("media")%>">SUPPORT</a>
            <br />
            CONTACT
            <br />
            ABOUT
            <br />
        </div>
        <div id="logo">
        </div>

所以我称这段代码在页面中猛烈抨击。当我点击<a href="<%=getPage("media")%>">时发生扭曲,所以它正常加载页面,但页面中有<%=getPage("home") %>静态站立,所有的时间,因为我需要从某个地方开始,它试图再次加载上一页,然后......服务器错误。

我知道这有点愚蠢的想法,但我不能再与他争辩了。

所以我的问题是 - 是否可以使用某种OnClick(Event e)或其他方式处理所有这些,调用不同的函数(因为我已经开始)。 或者我应该告诉老板,这样做不会......

2 个答案:

答案 0 :(得分:1)

如上所述,这不是一个好主意,但您可以通过使用某些Web控件来使其工作。

如果您的网页中有<%=getPage("home") %>,请将其更改为:

<asp:literal id="ltlContent" runat="server" />

Page_Load来电:

ltlContent.Text = getPage("home");

您网页上应加载其他内容的所有链接,将这些链接更改为LinkButton控件,其点击事件可能包含:

<asp:LinkButton id="linkMedia" runat="server" onclick="LoadContent" CommandArgument="media" />

public void LoadContent(object sender, EventArgs e){
    ltlContent.Text = getPage(e.CommandArgument);
}

答案 1 :(得分:0)

您可以尝试获取网址上的参数。 将它们添加到您的链接“?page = media” 然后你到达$ _GET [“page”]

时解析网址