2013-01-24 42 views
3
<% if (Session["desig"].ToString() == "Developer"){%> 
    <td> 
     <select name='zone' id="zone" onchange="showLoc(this.value,'mlodg_loc')"> 
      <option value="Select Zone">Select Zone</option> 
      <option value="East">East</option> 
      <option value="West">West</option> 
      <option value="North">North</option> 
      <option value="South1">South1</option> 
      <option value="South2">South2</option> 
      <option value="South3">South3</option> 
     </select> 
    </td> 
<%} 
    else 
    {%> 
     <td> 
      <select name='zone' id="Select1" onchange="showLoc(this.value,'mlodg_loc')"> 
       <option value="Select Zone">Select Zone</option> 
       <option value="<%#Session["zone"]%>"><%# Session["zone"].ToString() %></option> 
      </select> 
     </td> 
<%}%> 

上面的代碼工作正常,如果我直接寫它,我試着寫在其他文件中的代碼,並在主文件,我沒有Response.WriteFile("zone.aspx")包括在其他aspx文件aspx文件

我怎麼能包括它有什麼辦法可以包含,也想知道一個更好的方式來編寫上述語句。

三江源

+0

可能的重複http://stackoverflow.com/questions/5642624/how-to-include-aspx-page-in-another-aspx-page-in-asp-net – Matt

+2

不是.ascx可行的選項? –

回答

5

UserControls有沒有在asp.net爲了這個目的,使的.ascx文件這段代碼u有,並把它作爲任何地方控制。

+0

我想我必須用響應寫出html,如果我使用UserControl,賴特? – Aadam

+0

它輸出它自己的HTML你沒有這樣做對於任何東西,除了定義: '<%@註冊SRC =「YourFile。ascx「TagPrefix =」YOURTAGPREFIX「TagName =」YOURTAGNAME「%> 並使用:' 這會讓您開始:http:// msdn。 microsoft.com/en-us/library/aa728784(v=vs.71).aspx –

3

Response.WriteFile只是將文件內容寫入Http響應流而不分析它。

雖然有可能使用Server Side includes in asp.net<!--#include file="xxx.ext" -->),但它具有一個asp-classic代碼的氣味。

重新使用.aspx組件的更好方法是使用User Control (.ascx)

類似問題here

更新

Response.WriteFile是罰款純HTML,的CSS或.js文件,但不包含C#或引用.NET對象(你已經在使用Session您的代碼代碼),例如

Response.WriteFile("HtmlSnippet.html") 

其中HtmlSnippet.html

<p>In breaking news, scientists have discovered a planet in 
    <a href='http://en.wikipedia.org/wiki/Alpha_Centauri_Bb'>Alpha Centauri</a> 
</p> 

使用服務器端包含,例如<!--#include file="file.inc" -->將允許你做把這樣的事情在file.inc:

<% if (Session["desig"].ToString() == "Developer"){ %> 
    You are a Developer!! 
<% } %> 

不過,建議是使用用戶控件(.ascx),它允許你做很多的服務器端包含一樣,但只是以更加可重用,面向對象和可測試的方式。您的可重用控件將成爲頭等對象,具有屬性,方法並能夠引發事件。你需要在這裏做一些研究。

+0

我不明白如何用.ascx做到這一點,因爲我必須生成html。一段簡單的代碼可能會有所幫助。Thansk – Aadam

+0

謝謝,服務器端包含對於我們這些想要基本跳轉頁面的用戶來說完美,後者在加載後執行一些JavaScript來執行測試。 –

0

Response.WriteFile不處理在服務器端的代碼。它只需要html的內容並將其傳遞給瀏覽器。 如果你的代碼中包含了必須由你可以用這個方便的功能的服務器處理的代碼塊:

<div ID="menuContent" runat="server"> 
    <!-- #Include virtual="/menu.aspx" --> 
</div> 

在我menu.aspx文件我有原始的HTML和一些C#代碼塊和ASP插入後會解決這些內容放入頁面。很棒吧?