<% 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")
我如何包含它是否有任何方式可以包含,也想知道更好的方式来编写上述语句。
三江源
答案 0 :(得分:5)
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将在将内容插入页面后解决这些问题。好吧?