【问题标题】:include aspx file in other aspx file在其他 aspx 文件中包含 aspx 文件
【发布时间】:2013-01-24 11:13:26
【问题描述】:
<% 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")

我如何包含它有什么方法可以包含并且还想知道编写上述语句的更好方法。

谢谢

【问题讨论】:

标签: c# asp.net .net


【解决方案1】:

UserControls 在 asp.net 中有用于此目的,为您拥有的这段代码制作一个 .ascx 文件,并将其用作任何地方的控件。

【讨论】:

  • 如果我使用 UserControl,我想我必须写出带有响应的 html,对吗?
  • 它自己输出你的 html,除了定义:&lt;%@ Register Src="YourFile.ascx" TagPrefix="YOURTAGPREFIX" TagName="YOURTAGNAME" %&gt; 和使用:&lt;YOURTAGPREFIX:YOURTAGNAME ID="IDFORTHISCONTROL" runat="server" /&gt; 这将让你开始:msdn.microsoft.com/en-us/library/aa728784(v=vs.71).aspx
【解决方案2】:

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

虽然可以使用 Server Side includes in asp.net (&lt;!--#include file="xxx.ext" --&gt;),但这在 IMO 中具有 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>

使用服务器端包含,例如&lt;!--#include file="file.inc" --&gt; 将允许您在 file.inc 中放置类似的内容:

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

但是,建议使用用户控件 (.ascx),它允许您执行与服务器端包含的内容大致相同的操作,但只是以更可重用、面向对象和可测试的方式。您的可重用控件将是一流的对象,具有属性、方法并能够引发事件。你需要在这里做一些研究。

【讨论】:

  • 我不明白如何使用 .ascx 来做到这一点,因为我必须生成 html。一段简单的代码可能会有所帮助。谢谢
  • 谢谢,服务器端包含非常适合我们这些想要在加载后执行一些 javascript 进行测试的基本跳转页面的人。
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-02-11
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2017-10-10
    相关资源
    最近更新 更多