2013-08-29 31 views
0

因此,我的老闆有這個瘋狂的想法 - 整個網站在單個頁面上工作。到目前爲止 - 仍然沒問題,但這裏是: - 不同的頁面有不同的內容(像往常一樣)div,當某些div被點擊(或鏈接)時,一些div展開/摺疊,在揭示不同內容的方式。這很好,但是......將不同的HTML代碼加載到不同鏈接點擊的單個頁面上

  • 他並不想使用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;[email protected]&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)或某種其他方式,調用不同的功能(因爲我已經開始)。 或者我應該告訴老闆,它不會這樣工作...

+4

告訴你的老闆僱用一個知道JS的人 – BenM

+0

他想要的是一個」單頁應用程序「或SPA。 Studio 2012有一個模板,可以給你一個很好的方法來做到這一點的想法,我相信還有其他的方法來完成這個任務並不可怕,但是......將靜態html存儲在數據庫中是不好的。破壞關注點分離的最糟糕的方法之一 –

+0

@JasonP - 是的,但是我正在使用VS2010,並且我並不想處理MVC等等 – Syspect

回答

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); 
} 
+0

如何通過''「 home「參數在這裏: cuz我得到關於錯誤語法的錯誤信息 – Syspect

+0

@Syspect我更新了我給予的答案你是一個想法 – Curt

+0

啊,所以你的意思是我必須有一個不同的回調函數來放入控件,爲每個頁面......我明白了。 – Syspect

0

你可以嘗試get url的參數。 將它們添加到您的鏈接「?page = media「 然後當你到達$ _GET [」page「時解析這個url

+0

我不想使用查詢字符串。 – Syspect

相關問題