c# 关于masterpage的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 关于masterpage的问题相关的知识,希望对你有一定的参考价值。

masterpage上有个label控件,
a页面用了masterpage,b页面也用了masterpage,
a页面pageload的时候给label设定了为“aaaaaa”,按下按钮,跳转到b页面,这时候label的值变成了空,为什么?
谢谢了

a页面和b页面又不是同一个页面,你的a页面pageload设定了label的默认值“aaaaaa”,b页面当然会变成默认值为空了...因为pageload是在读取a页面时触发的事件嘛...

你要想label始终是一个值,如果label不在母板页的placeholder里面,你直接在模板页里面写事件就可以了.
参考技术A 因为b页面是完全的一个新页

尝试在 MasterPage 中查找控件时出现问题

【中文标题】尝试在 MasterPage 中查找控件时出现问题【英文标题】:Issue trying to find a control inside a MasterPage 【发布时间】:2017-11-05 10:57:52 【问题描述】:

我正在尝试在 asp.page 的代码隐藏文件中使用 C# 更改 html <div> 标记中的 DATA 属性。

这是我的 HTML 代码

<div class="tile page-content" id="fullTextArticle"
                    data-ID=""
                    data-permission="" runat="server">
</div>

这是我在代码隐藏文件中的 c#

private void DisplayFullTextArticle()
        


            string contentID = "";

            if (Context.Request.QueryString["contentID"] != null)//check for a value in the query string
            
                contentID = Context.Request.QueryString["contentID"];

                try 
                

                    //define connection string                
                    string connString = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

                    using (SqlConnection conn = new SqlConnection(connString))//create connection object
                    

                        SqlCommand cmd = new SqlCommand("spDisplayFullTextArticle", conn);

                        cmd.CommandType = CommandType.StoredProcedure;

                        conn.Open();

                        cmd.Parameters.Add("@ID", SqlDbType.Int).Value = Convert.ToInt32(contentID);

                        SqlDataReader myReader = cmd.ExecuteReader();

                        HtmlControl divDataID = FindControl(id: "fullTextArticle") as HtmlControl;


                        while (myReader.Read())
                        
                            divDataID.Attributes["class"]= myReader["ID"].ToString();

                        

                        myReader.Close();                      

                        ////end using statement for SqlCommmand Object

                    //end using statement for SQLConnection

                //end try block

                catch (Exception ex)
                

                 //end catch block

            //end if statement


一些上下文:我的方法从查询字符串中获取一个值并将该值传递给一个存储过程,该存储过程运行一个 SELECT 查询以从 SQL 数据库中提取全文内容。我使用断点进行了一些调试,我可以看到查询字符串确实将值传递给过程并且它成功运行了查询。问题是我的 HtmlControl 变量 divDataID 最终为空。所以没有设置ID值,所以浏览器中没有设置&lt;div data-ID&gt;属性。

有谁知道我做错了什么?如何从代码隐藏文件中设置 data-ID 属性?

【问题讨论】:

【参考方案1】:

当您使用母版页时,查找控件会比较棘手。你应该这样做:

var divDataID = Master.FindControl("ContentPlaceHolder").FindControl(id: "fullTextArticle") as HtmlControl;

其中"ContentPlaceHolder" 是母版页中的 ContentPlaceHolder ID。

【讨论】:

你好 kblok。我的原始代码确实具有 runat="server" 属性,但是我在这里发布时忘记包含(我已经更新了我的帖子)。我在代码中的方法是将 识别为服务器控件并执行存储过程,只是我的 HtmlControl 变量 dataDivID 为空。你知道我该如何解决这个问题吗? @webguy 是另一个服务器控件中的 div 吗? FindControl 不是递归的。我刚刚在本地测试过,它可以工作。 位于内容页面上,不,它没有嵌套在另一个服务器控件中。但是,在我的母版页中, 标记包含一个
标记,并且在该标记之间是存在我在这篇文章中提到的 div 问题的内容页面的占位符。
@webguy 检查新答案。 你太棒了!!您指定母版页占位符 ID 的解决方案起到了作用。它工作得很好!我被困在这个问题上很长时间了,你让它变得简单容易修复。我真的很感谢你的帮助!这篇文章应该对这里的其他编码人员有所帮助,因为这种情况是独一无二的,以前从未解决过。

以上是关于c# 关于masterpage的问题的主要内容,如果未能解决你的问题,请参考以下文章

通过Powershell更改SP 2010中的母版页

您如何在 MasterPage 中包含 JavaScript?

尝试在 MasterPage 中查找控件时出现问题

在 ASP.NET 中使用 MasterPages

C# .NET 包含文件

如何从 css 获取图像信息到 MasterPage'gridview 中?