一般我在asp里面会这么用:
<!--#include file="conn.asp"-->//一些数据库连接语句
<!--#include file="webconfig.asp"--> //包含网站版权,Title标题等字符串变量
然后可能在下面这么引用:
<html>
<head>
    <title><% =title %></title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
...那么,asp.net里面应该怎么做好呢?

解决方案 »

  1.   

    和以前的asp不同,在asp.net中为了彻底的代码分离,我们一般不采用<%=%>嵌入标签中来设置一些属性和内容。
    一般来说有2种情况:
    (一)设置标签的内容,比如<title>这里</title>
    (二)设置标签的属性,比如<body bgcolor=这里>
    (三)动态加载一些script
    先看一下(一)和(二):
    前台
    <title id="mytitle" runat="server"></title>
    <body id="mybody" runat="server">
    后台
    protected HtmlGenericControl mytitle;
    protected HtmlGenericControl mybody;
    this.mytitle.InnerText="test";
    this.mybody.Attributes["bgcolor"]="#cccccc";
    这里说明3点:
    (1)前台标签runat=server是必须的
    (2)HtmlGenericControl的命名空间是System.Web.UI.HtmlControls
    (3).InnerText和.InnerHtml是有区别的
    比如:
    前台
    <span runat="server" id="myspan"></span>
    后台
    this.myspan.InnerText="<b>test</b>"
    得到的结果是
    <span id="myspan">&lt;b&gt;test&lt;/b&gt;</span>
    把后台改为
    this.myspan.InnerHtml="<b>test</b>"
    得到的结果是
    <span id="myspan"><b>test</b></span>
    再来看看动态加载一些script
    一般来说有三种情况
    (1)在前台放置<asp:Literal Runat="server"></asp:Literal>指定位置输出
    (2)后台通过RegisterStartupScript和RegisterClientScriptBlock输出
    (3)Response.Write输出
    举例如下
    (1)
    前台
    <asp:Literal ID="myLiteral" Runat="server"></asp:Literal>
    后台
    this.myLiteral.Text+="<script>alert('test');</script>";
    查看源代码可以看到原来的
    <asp:Literal ID="myLiteral" Runat="server"></asp:Literal>
    位置变成了
    <script>alert('test');</script>
    (2)
    为了更加清楚看到两个的区别,前台如下
    <form id="Form1" method="post" runat="server">
    <input type="hidden" value="test" id="myhiden">
    </form>
    后台如下
    Page.RegisterStartupScript("","<script>alert('RegisterStartupScript:'+document.all.myhiden.value)</script>");
    Page.RegisterClientScriptBlock("","<script>alert('RegisterClientScriptBlock:'+document.all.myhiden.value)</script>");
    结果如下:只出现对话框显示RegisterStartupScript:test
    查看源代码如下:
    <form name="Form1" method="post" action="WebForm4.aspx" id="Form1">
    <input type="hidden" name="__VIEWSTATE" value="dDwtNjU0MzcyMTk1Ozs+NmbLf6dWkF/Q/FLKKsdPPfhFXr0=" />
    <script>alert('RegisterClientScriptBlock:'+document.all.myhiden.value)</script>
    <input type="hidden" value="test" id="myhiden">
    <script>alert('RegisterStartupScript:'+document.all.myhiden.value)</script>
    </form>
    两者区别不用多说了吧
    (3)
    我们再加一句Response.Write("test")
    查看源代码发现test字样出现在最前面
    test
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    用它来输出转向代码比较合适
    <script>location.href='page.aspx'</script>
      

  2.   

    我试过用用户控件,可是网站版权,Title标题等各种常用字符串信息分布在网页的不同地方,如果用用户控件,那我不是要写很多的ascs文件才行吗?
      

  3.   

    楼上的楼上只解释了一个方面,另外一方面,像<!--#include file="conn.asp"-->这样的代码重用asp.net里面一般是如何做的呢?
      

  4.   

    一方面,像<!--#include file="conn.asp"-->这样的代码重用asp.net里面一般是如何做的呢?
    ____________________________________________________________________________________
    这是一个包含文件啊..他的代码是专门写一个文件啊..用<!--#include file="conn.asp"-->调用就OK了,相当于一个集成模块啊!!!!!!
      

  5.   

    将连接字符串放入web.config的键里是最常用的方法,不过,这样并不能就连接了,只是可以在程序中用键来替代连接字符串,如果要像ASP中<!--#include file="conn.asp"-->一样,那么你可以定义一个程序集,例如将数据库连接是过程放如到一个命名空间为NAMESPACE 的DATA_CONN类中,在其中定义CONN方法就可以写入具体的连接代码,那么你在程序中要使用数据库连接的时候就可以为 NAMESPACE.DATA_CONN创建一个新事例,然后调用CONN方法,就可以了了。
    例如:当我已经定义好了命名空间,类,以及连接数据库的方法,那么在页面里接可以这样写
    (使用VB语言)
    sub page_load()
    dim conn as new NAMESPACE.DATA_CONN
    conn.conn() '这里就连接了数据库
    end sub