0

所以,我的老板有一个疯狂的想法——整个网站都在一个页面上工作。到目前为止 - 仍然可以,但事情是这样的: - 不同的页面有不同div的内容(像往常一样),当点击一些 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>

所以这就是初始页面的样子,然后在parentdiv 中我将调用其他页面的 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>

所以我把这段代码叫做 slam it in the page。扭曲发生在我<a href="<%=getPage("media")%>">单击时,因此它正常加载页面,但是页面中始终<%=getPage("home") %>静止不动,因为我需要从某个地方开始,它会尝试再次加载上一页,并且...服务器错误。

我知道这是一个愚蠢的想法,但我不能再和他争论了。

所以我的问题是 - 有没有办法通过某种OnClick(Event e)或其他方式来处理所有这些,并调用不同的函数(正如我已经开始的那样)。或者我应该告诉老板,这样不行……

4

2 回答 2

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);
}
于 2013-08-29T13:19:56.437 回答
0

您可以尝试获取 url 上的参数。将它们添加到您的链接 "?page=media" 上,然后在您到达 $_GET["page"] 时解析 url

于 2013-08-29T13:21:46.447 回答