在一个网页中如果有许多的客户端的控件,我怎么替换为对应的服务器段控件!这个服务器端的控件的
位置、样式都不变,解决了给200分

解决方案 »

  1.   

    既然你要把它作为server控件。为什么不一开始就指定为runat=server呢?
      

  2.   

    不好解决。
    试试以下两种办法:
    一种是通过正则表达式进行替换。对于每一个要替换的html元素都使用写一条替换表达式,然后分次进行替换。
    另一种办法:先把这个网页解析了xml,然后分析这个xml文件后得先生成新的。遇到要替换的元素则进行替换,不替换则进行copy就行了。其实这个方法很好,问题是把网页解析了xml可以不好做
      

  3.   

    第二种方法中把html解析了xml的方法介绍:http://www.ftponline.com/china/XmlFile.aspx?ID=251
      

  4.   

    最笨的方法是打开aspx文件,把需要的地方加上runat=server再覆盖原文件保存。
    程序用流方式读入。不过烦点。
      

  5.   

    解析HTML文件,用正则表达式,遇到需要替换的控件,则生成对应的服务器端控件,然后将对应的属性,样式加上!
    以前做过一个,不过一开始很烦,而且你必须对Html文件加一些控制,否则真的很麻烦:)
      

  6.   

    不好办啊,不过可以试试:如果是我的话,直接读源文件的数据流
    然后对原文件的数据流进行分析,然后在替换StringBuilder htmltext=new StringBuilder();
    try 
    {
    StreamReader sr = new StreamReader("d:\\qiye1.htm",System.Text.Encoding.GetEncoding("gb2312"));

    String line;
    while ((line = sr.ReadLine()) != null) 
    {
    htmltext.Append(line);
    }
    sr.Close();

    }
    catch 
    {
    Response.Write("<Script>alert('读取文件错误')</Script>");
    }读出来以后,然后对sr进行分析,替换,最后在重新生成:try
    {
    string path=Server.MapPath("../"+Session["diqu"].ToString()+"/"+Session["shixian"].ToString()+"/"+Session["username"].ToString()+"/qy2.html");
    StreamWriter sw=new StreamWriter(path,false,System.Text.Encoding.GetEncoding("gb2312"));
    sw.WriteLine(htmltext);
    sw.Flush();
    sw.Close();

    }
    catch(Exception ex)
    {
    Response.Write (ex.Message);
    }
    中间的路径我没改,代码是我原来的,不想改了
      

  7.   

    一种是通过正则表达式进行替换。对于每一个要替换的html元素都使用写一条替换表达式,然后分次进行替换。
    另一种办法:先把这个网页解析了xml,然后分析这个xml文件后得先生成新的。遇到要替换的元素则进行替换,不替换则进行copy就行了。其实这个方法很好,问题是把网页解析了xml可以不好做
      

  8.   

    to saucer:相当于操作模板,所以每次都转换!
      

  9.   

    不见得需要重新编译,只是需要分析HTML,然后依样生成对应的服务器控件,但没必要每次请求都这么做,所以我建议你自己看一下自己的要求,一次做成用户控件最好,参考ASP.NET Page Templates..... 
    http://blogs.msdn.com/alowe/archive/2003/01/31/258.aspx
      

  10.   

    用PlaceHolder吧, 跟据请求在控件上new 一个控件出来在设置属性
      

  11.   

    控件上new一个后和你模板性设置一样就行了啊
    不过处理按扭事件的就有点麻烦了
    你这么做目地是什么?没必要吧