1 实现功能:多城市项目,某城市上线新功能,另外一部分城市维持老的用户控件,
2 之前写法是这样,后跟踪发现,北京的仍然走了用户控件的代码,也就是用户控件已经在页面上了,还是要走一遍后台加载一遍的,这一步是浪费的。
3 解决方法:a 页面改成PlaceHolder,后台动态加载(注意:LoadControl()方法里面的路径写项目实际路径,可能和命名空间不一致)
b 还有一种讨巧的方法,在用户控件里面page_load判断是北京,this.visible=false,return;即虽然仍走了控件,但是直接就出来了。
<!-- start--> <div id="div_inte"></div> <%if (cityName != "北京") {%> <uc:interested runat="Server" id="ucinterested"> </uc:interested> <% }else{ %> <!--#include virtual="/gaa/aa.htm"--> <% }%> <!-- end-->
<!-- start-->
<div id="InterestedHouse"></div>
<%if (cityName != "北京")
{%>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<% }else{ %>
<!--#include virtual="/aa/aa.htm"-->
<% }%>
<!-- end-->
protected UserControl.Detail.housedetail.interested ucinterested=new UserControl.Detail.housedetail.interested (); if (cityName != "北京") { ucinterested = (UserControl.Detail.housedetail.interested)LoadControl("/EsfHouse/UserControl/Detail/interested.ascx"); PlaceHolder1.Controls.Add(ucinterested); ucinterested.projname = ahse.PROJNAME; ucinterested.purpose = ahse.PURPOSE; ucinterested.room = ahse.ROOM.ToString(); ucinterested.district = ahse.DISTRICT; ucinterested.comarea = ahse.COMAREA; ucinterested.houseid = ahse.HOUSEID.ToString(); } else { }