解决方案 »
- ICallbackEventHandler实现AJAX后,提交页面的时候后台获取不到前台控件的值
- SelectListItem问题
- 用户控件中怎么使用jquery?
- 使用LinkButton附件不存在时如何判断或者提示?
- 关于asp.net连接和信箱的问题
- 我有个关于gridview的问题,高手指点哈啊!
- 请问:为什么直接能够访问的aspx文件和dll文件,在vs里面编译出错?
- 请高手赐教:一个Excel的问题!!!(分不够可以再加)
- 才鸟没钱也要问!!!!!!!
- 关于用C#.NET开发的ASP.NET系统,在给客户安装时,具体要装些什么?
- 域名和域名空间有什么关系
- 请问如何使用独立安装的水晶报表11(Crystal Reports XI)?
protected override void Render(HtmlTextWriter writer)
{
if (this.DesignMode)
this.tb.Text = "在此输入邮件地址";
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.lb.RenderControl(writer);
writer.RenderEndTag(); writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.tb.RenderControl(writer);
writer.RenderEndTag(); if (String.IsNullOrEmpty(this.ValidateExpression) == false && this.DesignMode == false)
{
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.rev.RenderControl(writer);
writer.RenderEndTag();
}
writer.RenderEndTag();
writer.RenderEndTag();
}
{
this.name=value
}
去除:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 然后重新编译开启viewstate 试试,
还有郑健老师说的:"复杂属性一般没有set 语句,因为一般是对复杂属性的子属性(或子对象)赋值,只要保证它的子属性(子对象)中具有get/set 语句即可。"
我是这么理解的,在PersonTest中name、intAge这两个属性都是自动属性,都有对应的getset方法,于是乎呢,在控件类中就没有必要去写set方法了,不知道这么理解对不对。所以你说的set{this.name=value}这个东西应该放在哪?要是放在PersonTest这个类中不用自动属性呢?有什么区别么?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace Controls
{
[DefaultProperty("personTest")]
[ToolboxData("<{0}:WebCustomControl runat=server></{0}:WebCustomControl>")]
public class WebCustomControl : WebControl
{ private PersonTest _personTest;
[Description("测试属性")]
[Category("测试属性")]
[PersistenceMode(PersistenceMode.Attribute)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public Controls.PersonTest personTest
{
get
{
if (_personTest == null)
{
_personTest = new PersonTest();
}
return _personTest;
} }
protected override void Render(HtmlTextWriter writer)
{
if (this.DesignMode)
{
writer.Write("<span>" + personTest.Name + "</span>"); writer.Write("<span><b>" + personTest.IntAge.ToString() + "</b></span>");
}
}
} [TypeConverter(typeof(ExpandableObjectConverter))]
public class PersonTest
{
private string name;
[Description("名称")]
[NotifyParentProperty(true)]
public string Name
{
get { return name; }
set { name = value; }
} private int intAge;
[Description("年龄")]
[NotifyParentProperty(true)]
public int IntAge
{
get { return intAge; }
set { intAge = value; }
}
}}
我写的一个,,试了下可以修改后在界面上显示,注意加上[NotifyParentProperty(true)]
果然是[NotifyParentProperty(true)]的问题,我在PersonTest的自动属性前加上[NotifyParentProperty(true)]就好用了,谢谢!