在其他aspx文件中包含aspx文件

时间:2013-01-24 11:13:27

标签: c# asp.net .net

<% 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")

我如何包含它是否有任何方式可以包含,也想知道更好的方式来编写上述语句。

三江源

3 个答案:

答案 0 :(得分:5)

为了这个目的,在asp.net中有

UserControls,为你拥有的这段代码创建一个 .ascx 文件,并在任何地方使用它作为控件。

答案 1 :(得分:3)

Response.WriteFile只是将文件内容写入Http响应流,而不进行解析。

虽然可以使用Server Side includes in asp.net<!--#include file="xxx.ext" -->),但它有一个asp经典的代码气味IMO。

重新使用.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),它允许您执行与服务器端包含相同的操作,但只是以更可重用,面向对象和可测试的方式。您的可重用控件将是一个第一类对象,具有属性,方法并能够引发事件。你需要在这里做一些研究。

答案 2 :(得分:0)

Response.WriteFile不处理服务器端的代码。它只需要获取html的内容并将其传递给浏览器。 如果您的代码包含必须由服务器处理的代码块,您可以使用这个方便的功能:

FrameLayout

在我的menu.aspx文件中,我有原始的html和一些C#代码块,ASP将在将内容插入页面后解决这些问题。好吧?