以前问过但不了了之 
现在又想问了;
如一个服务器image控件
生成的HTML如是
“<img id="img1" name="img1" src="" alt="" />”
那我现在要让他生成的HTML为
“哈哈你看不到我,你看不到我”这个要如何来实现呢

解决方案 »

  1.   

    不知道重写,自定义控件,然后输出 public class MyImage : Image
        {
            
     
            protected override void Render(HtmlTextWriter writer)
            {
                TextWriter tempWriter = new StringWriter();
           
                StringBuilder sb = new StringBuilder();
                sb.Append(“哈哈你看不到我,你看不到我");            writer.Write(sb.ToString());
            }
        }
      

  2.   

    那就是 重新写一个服务器控件了,然后重写 onrender 方法
      

  3.   

    ?楼主是要隐藏控件吗?
    那这样设置就行了.
     <img style="display:none" src="" />
      

  4.   

            StringBuilder sb = new StringBuilder();
            sb.Append("哈哈你看不到我,你看不到我");
            this.RegisterStartupScript("", sb.ToString());
    RegisterClientScriptBlock()或
    RegisterStartupScript()
    都可以注册客户端代码.
      

  5.   

    是说你要某个服务器image控件生成的HTML是“哈哈你看不到我,你看不到我”对吗?如果是的话,1楼已经解决了你的问题 你直接调用MyImage控件,它生成的HTML就是“哈哈你看不到我,你看不到我”对吗?而其他服务器image控件功能没变
      

  6.   

    应该是说原服务器image控件功能没变
      

  7.   

    MyImage只是继承了Image控件,重写了Render(HtmlTextWriter writer) 
      

  8.   

    RE:楼上各位可能都不知道我的意思
    如有以下页面和代码大家补充<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default8.aspx.cs" Inherits="Default8" %>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:Image ID="Image1" runat="server" />
        </form>
    </body>
    </html>
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;public partial class Default8 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
              //请在这里补上,说明那个Image控件不是用Visible=flase变的,而是要用重写写掉他
        }
    }要实现的是生成的HTML为<html xmlns="http://www.w3.org/1999/xhtml">
    <head><title>
    无标题页
    </title></head>
    <body>
        <form name="form1" method="post" action="Default8.aspx" id="form1">
    <div>
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTk3MzY5NzU2NmRkiRurDKlYapmWX5CIWzT9VjnLJzc=" />
    </div>
        哈哈你看不到我,你看不到我
        </form>
    </body>
    </html>
      

  9.   

    把你的Image控件加到一个pannel控件里
    如果没有达到你要替换的条件,继续显示image
    如果达到了你要输出“哈哈你看不到我,你看不到我”的条件
    if(!isnormal)
    {
    pannel.Controls.Clear();
    pannel.controls.Add(new Litral("哈哈你看不到我,你看不到我"));
    }
      

  10.   

    RE:把你的Image控件加到一个pannel控件里 
    ----------------------
    不要改变我的ASPX文件
    因为现在我的方法就是用一个Image和一个Litral来显示的Images.Visible=true时Litral.Visible=flase 反之相反
    所以我不想用这种方法谢谢
      

  11.   

    虽然实现你的要求,但最好不要用.   protected override void OnPreRender(EventArgs e)
            {            for (int i = 0; i < this.Form1.Controls.Count; i++)
                {
                    if (this.Form1.Controls[i] == this.Image1)
                    {
                        this.Image1.Visible = false;
                        Literal lt = new Literal();
                        lt.Text = "你看不见我~";
                        this.Form1.Controls.AddAt(i, lt);
                        i++;
                    }
                }            base.OnPreRender(e);
            }