继承了模板页的子页如果给模板页中的自定义控件传值

问题描述

模板页中有个用户自定义控件Top.ascx用来显示导航条继承了模板页后的子页面想传递一个值给Top.ascx,使得Top.ascx自定义控件中的导航获取子页面传递的值显示不同的导航信息。求式例代码?

解决方案

解决方案二:
用强类型的母版页让母版页来提供一个方法来操作就好,母版页其实是内容页的一个控件,没继承关系的
解决方案三:
子页面建立Session在Top.ascx判断session值改变导航信息!
解决方案四:
Referthis:
解决方案五:
其实LZ的主要问题是aspx页面向母版页.master页面的传值,因为再自定义控件中使用控件的属性能很容易进行传值至于aspx与.master之间的传值,看看这篇文章
解决方案六:
想问一下:aspx页面向母版页.master页面的传值,那母版页上的自定义控件Top.ascx后台Footer.ascx.cs如何获得这个值,问题二:我在aspx页上使用this.ContentPlaceHolder1.FindControl("textBox1")这样类似的方法提升找不到ContentPlaceHolder1这个控件一下是代码Top.ascx后台publicpartialclassTop:System.Web.UI.UserControl{privatestringmenu_id="0";publicstringMenu_Id{get{returnmenu_id;}set{menu_id=value;}}protectedvoidPage_Load(objectsender,EventArgse){strings=Menu_Id;Cms.BLL.Linksbll=newCms.BLL.Links();Cms.Model.Linksmodel=newCms.Model.Links();DataSetdt=bll.GetList("IsImage="+Convert.ToInt32(Menu_Id));rptlist1.DataSource=dt.Tables[0].DefaultView;rptlist1.DataBind();}

有自定义控件Top.ascx的母版页前台代码<%@MasterLanguage="C#"AutoEventWireup="true"CodeBehind="Manager.master.cs"Inherits="Cms.Web.Manager"%><%@Registersrc="Controls/Top.ascx"tagname="Top"tagprefix="uc1"%><%@Registersrc="Controls/Footer.ascx"tagname="Footer"tagprefix="uc2"%><formid="form1"runat="server"><!--Logo.Start--><uc1:TopID="Header"runat="server"/><!--Logo.End--><asp:ContentPlaceHolderID="ContentPlaceHolder1"runat="server">内容页</asp:ContentPlaceHolder><!--Footer.Start--><uc2:FooterID="Footer"runat="server"/><!--Footer.Start--></form>

继承了母版页的子页面前台代码<%@PageTitle=""Language="C#"MasterPageFile="~/Manager.Master"AutoEventWireup="true"CodeBehind="About.aspx.cs"Inherits="Cms.Web.About"%><asp:ContentID="Content1"ContentPlaceHolderID="ContentPlaceHolder1"runat="server"></asp:Content>

继承了母版页的子页面后台代码publicintmenu_id;//全局变量IdpublicstringStrTitle="";publicstringStrContent="";protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){Cms.BLL.Contentsbll=newCms.BLL.Contents();Cms.Model.Contentsmodel=bll.GetModel(1);//Session["menu_id"]=1;//Response.Redirect("Top.ascx");//Sessionintid=1;//FindControl("ContentPlaceHolder1")menu_id.ToString()="1";//this.ContentPlaceHolder1.FindControl("Top").StrTitle=model.Title;StrContent=Cms.Common.Utils.ToTxt(model.Content);}

问题三,用session如何向母版页上的自定义控件传值?
解决方案七:
母板页在运行是嵌入内容页的一个用户控件,这其实就跟一个普通的控件的作用是一样的,是用来“屏蔽”内部实现信息的。也就是说,如果你修改母板页的设计(但是Content接口不变),那么你的各种内容页就自动改变了。母板页既然要想维系这种真正的设计目的,就不能去悲催地支持什么外界想当然地去处理其内部的什么子控件这类做法。它一定是是在接口上设计你的“传递一个值”的属性。举个例子,假设我们把这个业务接口预先设计为publicinterfaceI传递组织架构的值{Unitunit{get;set;}}

任何一个控件如果需要外界传递给它组织架构(好在其内部利用这个数据,例如产生顶层菜单),都可以使用这个接口。例如你的母板页可能就是publicpartialclassMyMasterPage:System.Web.UI.MasterPage,I传递组织架构的值{publicUnitunit{get{EnsureChildControls();.......}set{EnsureChildControls();.......}}.......

这样,你的内容页不用等母板页是否做好,就可以按照接口进行编程。例如写Unitdata=BLL.获取顶层组织架构();varmaster=(I传递组织架构的值)this.Master;master.unit=data;

这样就是传递这个值(是一个自定义对象)给母板页。母板页与top.ascx的关系也是如此。你的top.ascx的代码可以使用这个接口,然后由上面的setter方法中直接给它复制。原则是——信息对外是只暴露接口的。top.ascx内部是如何实现的,与母板页无关,母板页不能想当然地去处理top.ascx内部的控件。同样,内容页也不能想当然地去整什么textBox1控件。软件之所以成为工程,是有它的道理的。你把那些垃圾的做法去掉一半,就会顺利地开发下去。反之如果你你没有这些知识,可能很快就陷入到泥沼中,你的代码连自己的懒得维护,更别提原本(内部屏蔽的部分)要快速重构了。
解决方案八:
至于说什么Session集合来临时保存一下数据,这个就很难说它“算是什么”。尽管有不少自学asp.net出身的人这样写代码,但是要知道这是我们懒得去说的一种“毁三观”的习惯造成的。因为Session是会话范畴的机制,而你现在是在讨论一个Page对象内部的整体与局部之间的关系。这就好比如说你写一个代码publicvoid方法1(){varx=......;调用方法2(x);.......}

你现在只想设计方法“内部”的参数传递机制,你因为不知道这个参数x如何定义,有人跟你说“你定义一个privatestatic的全局静态变量来为方法2传递参数,这种“毁三观”的做法在你只会做一点小程序混日子的时候可能觉得“也不错,可以达到效果”。但是它其实理解起来更加诡异,而且很容易就会有严重的问题显现出来。
解决方案九:
楼上的大哥,我就是做个普通的网站,你也看到了,不是什么高端,大气,上档次的大型系统,有时间你就帮忙解决下问题,别在这瞎喷了,任何软件都是要根据需求来定,我这个网站上的导航条,我希望他能根据页面来显示不同的导航信息,比如我进入公司简介,母版页上自定义控件导航就会显示公司简介上的相关目录,如“关于我们”“公司荣誉””联系我们“;当我们进到最新资讯页面,导航条显示”行业动态“,”公司动态“”最新活动“;这本身就是临时数据。

时间: 2025-01-30 04:02:54

继承了模板页的子页如果给模板页中的自定义控件传值的相关文章

jqueryui-asp.net为什么在使用了模板页的子页中jquery.validate不能使用

问题描述 asp.net为什么在使用了模板页的子页中jquery.validate不能使用 如下是我写的代码,为什么在使用了模板页的子页中用validate就不行呢,完全不起作用required: true也不提示必须输入,如下是代码,该怎么解决呢?麻烦大神指教.另外ContentPlaceHolder1_Button1 的ontentPlaceHolder1_前缀用的应该没错,点按钮后 alert(""aswqdq"");是有效果的,就是rules 不起作用母页代

asp生成静态页主要涉及三个方面:模板,参数,fso

fso|静态|模板 asp生成静态页主要涉及三个方面:模板,参数,fso. 1,模板:这个其实就是页面的框架,以下为模板的例子:###############################这就是一个模板###############################<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t

虚子雨:关键词搜索页网站数看关键词竞争大小

大家好,我是虚子雨.前面给大家讲了看竞争大小的两个方面,分别从关键词在搜索引擎搜索的结果页面数和百度指数的一些相关数据来看关键词的竞争大小,感兴趣的朋友可以看看前面的两篇文章:<虚子雨:关键词搜索结果页看关键词竞争大小><虚子雨:搜索关键词百度指数看关键词竞争大小>.今天我接着给大家往下讲,主要是从关键词搜索结果的网站数据教大家识别关键词的竞争大小,希望大家能够学到东西. 任何一个关键词要想知道有多大的竞争,首先我们要看的是搜索结果的页面数,其次我们需要看的就是搜索结果的网站数目,

代码-如何在内容页找到子页masterpage的控件

问题描述 如何在内容页找到子页masterpage的控件 有两个masterpage嵌套内容在contentplaceholder2中要在内容页中改变子页masterpage的label值label lab=(label)Page.Master.FindControl(""Label1"");为什么实现不了??撸代码的新手 希望大家可以帮我解答一下

TabHost页和子Activity之间的通讯

TabHost的各个Tab页,都是由activity组成. 现在,某个子Activity中处理数据后,要自动跳转到另外一个Tab页中.这样,需要有个TabHost页和子Activity之间的通讯的机制.   子Activity通知TabHost: 1.通过广播方式 1)在TabHost中定义广播 定义变量 protected MessageBroadcastReceiver myReceiver = null;   在onCreate中注册: 加入receiveBroadcast();   pr

水晶报表取在页眉栏如何区分前一页和当前页的数据?

问题描述 页眉栏在取数据的时候一般会取当前页的第一条作为页眉栏的数据,但如果说某一组的组尾在当前页的页首的话,那么页眉会取前一页的最后一条记录作为页眉,这两种情况如何区分? 解决方案 解决方案二:顶下~在先等,急!!解决方案三:首先页眉显示的始终是当前页第一条实际记录,而当你组尾作为页首时,因为组尾不是一条实际记录,所以当前页的第一条实际记录就变成上一页的最后一条实际记录.不过正常基本不会让组尾出现在页首的机会,不仅看着别扭,更是有点不合逻辑,你可以进入组专家,有一个保持在一起的属性,勾选它,让

神奇-js中分页,第一次点下一页时没问题,总共13页,第二次点击下一页的时候就出错

问题描述 js中分页,第一次点下一页时没问题,总共13页,第二次点击下一页的时候就出错 function(param currentpage totalPage){ alert(""currentpage:""+currentpage);//2 alert(""totalPage:""+totalPage);//13 alert( currentpage > totalPage ) alert( currentpage

设置Word的某页为横向、单独设置某页的方法

  现在,您想要实现这样的效果,想设置其中的某一页为横向的,而其它页则统一为纵向的.如何设置呢?方法如下,相当简单. 单独设置Word某页为横向.纸张大小.页边距等,均使用如下方法. 比如,您的Word文档总的有十页,现在,您要将第二页的纸型方向设置为横向,并且,页面的页边距离等都设置成为和其它的不相同.总之,设置第二页与其它不相同,而第一.第三.第四到第九页,都相同,那么,采用如下方法. 第①步 将插入条定位到第一页的最后一个位置,注意,定位到最后一个位置. 然后,执行菜单操作: "插入&qu

Word页眉怎么添加横线?word2007页眉添加横线方法

第一步: 菜单栏点击"插入--页眉",然后在点击"页眉布局--页眉边框",弹出一个边框和底纹. 第二步: 在打开的边框和底纹选项中,选择窗口中的横线按钮,然后在打开的横线窗口中,选择你喜欢或者需要的横线. 第三步:   会出现很多线性,这里随便选择一个线性,然后在单击"确定"按钮这样就会自动在word中插入横线了.         注:更多精彩教程请关注三联电脑教程栏目,三联电脑办公群:189034526欢迎你的加入