日期:2014-05-17  浏览次数:20483 次

web用户控件赋值的问题
我做了一个web用户控件,里面有一些asp.net服务器控件(比如里面有一个<asp:label ID="label_Name">),这样在初始化这个用户控件的时候,我可以对这个用户控件的属性进行赋值label_Name.Text="刘德华"。
但是我现在不想用asp.net服务器控件,我想换成<label>,这样问题就来了,初始化这个用户控件的时候怎么给这个<label>赋值?

谢谢!

------解决方案--------------------
<label for="male"><%= strName %></label>

------解决方案--------------------
你不能这样理解服务器控件,否则asp.net早就玩完了。

会不会影响网络传输,取决于你要传输什么,仅仅是传统html内容,还是包含有viewstate?viewstate的确很大,但是你也可以设法保存到服务器上面,这不会影响网络传输。
------解决方案--------------------
服务器端控件要在服务器端执行,生成HTML,如果用户多,影响响应
html有客户端执行,影响不大
ViewState 用于维护页面的 UI 状态 
由 ASP.NET 页面框架管理的一个隐藏的窗体字段。当 ASP.NET 执行某个页面时,该页面上的 ViewState 值和所有控件将被收集并格式化成一个编码字符串,然后被分配给隐藏窗体字段的值属性
------解决方案--------------------
你可以放弃.net了。因为你到现在还没弄清楚什么是服务器控件,什么是html控件
------解决方案--------------------
性能取决于你怎么用了,如果单纯是为了显示而不用保存值,那么完全可以不用viestae来保存回发值
------解决方案--------------------
服务器控件才能到后台写cs代码吧
------解决方案--------------------
ASP.net技术群招募中 本群只招收 执着技术的开发者

84506002
------解决方案--------------------
服务器控件最终还是会生成html控件。。。
------解决方案--------------------
顶过。
------解决方案--------------------
探讨
我理解的服务器控件就是<asp:Label>,html控件就是<label>,服务器……

------解决方案--------------------
所谓的<lable></label>是没有生命周期的,在客户端解释。
而<lable id="aaa" runat="server"></lable>需要在服务器经过preinit init load prerender render等过程。

不要看到asp:label标志就认为是服务器控件。没有asp:就认为不是。

以你理解,下面的看来是错的了?

<asp:Label>纯html</asp:Label>这是纯html标签,不是服务器控件
<asp:Label id="lable1" runat="server">服务器控件</asp:Label>这才是服务器控件

看好基础书籍才是硬道理,不要“我认为”。




------解决方案--------------------
不看page生命周期,不看control生命周期,你怎么能理解这些控件在服务器干了些什么?

不要拿一些“增加服务器负担”和“增加网络传输负担”之类的借口搪塞你自己。搞明白才是真的。

想减轻服务器负担,很多人都硬编一些html标签,比如:
stringbuilder sb;
sb.append("<a>");
ab.append("<table>");
用LiteralControl将这些html添加到客户端,或直接<%=sb.ToString()%>


想减轻网络传输负担,最应当克服的就是频繁的整个页面回发和庞大的viewstate传输。一些手段是可以解决这些问题的。ajax不就是应运而生了吗?viewstate并不是非要保存到页面上面的input隐藏域中,你可以重写page类将它保存到服务器上面的某个cache文件夹中。

写的手麻了,你自己查查资料吧,拜拜~~~
------解决方案--------------------
哎,非服务器控件不能够直接赋值的,你如果下载discuz等一些专业程序源码,会发现cs中他们都是用
stringbulder来拼接html字符串输出到客户端的。而且许多页面都没有任何服务器控件和所谓的html标签。

cs中不就可以动态的生成html代码吗?

sb.append("<a id="+x.ToStrinh()+"></a>);

这样可以节省服务器端解释负担

非服务器端控件只能在render或者prerender中修改。不能在cs中动态赋值。不然他怎么叫非服务器控件呢?
------解决方案--------------------
菜鸟飞过,各位高手多多指教
------解决方案--------------------
引用网友提问:
关于开发web项目现在有几种观点:
1、 开发web项目时,尤其是大流量web项目,如果太多的使用服务器控件或用户控件会影响网站访问速度,开发中,页面的数据显示全部使用Vs提供的控件来显示,页面中全部是一个个gridview,button,repeater...等服务器控件,这样开发模式很好的响应了micro的号召。.............