日期:2014-05-18  浏览次数:20399 次

给服务器控件的属性传动态值的问题
我写了一个服务器控件,代码如下:
using System;
using System.Web.UI;

namespace mytag
{
  public class MyTag : Control
  {

  private String msg;

  public String Msg
  {
  get
  {
  return msg;
  }
  set
  {
  msg = value;
  }
  }

  protected override void Render(HtmlTextWriter writer)
  {
  writer.WriteLine("<h3>这是我的TAG, "+ Msg + "<h3>");
  }
  }
}

使用此服务器控件的ASPX如下:
<%@ Register TagPrefix="tag" Assembly="res" Namespace="mytag" %>
<%@ Page Language="C#" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>无标题页</title>
</head>
<body>
<%
  String msg = "哈哈";
%>
  <tag:MyTag runat="server" Msg="<%=msg%>"/>
</body>
</html>

可是在IE里访问时,查看源文件是如下:
<h3>这是我的TAG, <%=msg%><h3>

请教高手,如何才能将变量msg的值"哈哈"传送到tag里面去呢


------解决方案--------------------
我也遇到过同样的问题。<% %>好像只能用在非服务器控件里(没有runat="server"的控件),因为服务器控件默认是被服务器解析的。
------解决方案--------------------
private string msg="hehe";

<tag:MyTag runat="server" Msg='<%=msg%>' /> 

------解决方案--------------------
mark
------解决方案--------------------
4楼的方法可行。
------解决方案--------------------
怎么不在代码文件中传值呢。
------解决方案--------------------
后台:pageload事件- WebUserControl1.msg="哈哈";

<uc1:WebUserControl ID="WebUserControl1" runat="server"/>