尝试在MasterPage中找到控件的问题

时间:2017-06-04 15:50:38

标签: c# sql asp.net sql-server html5

我正在尝试使用代码隐藏文件中的C#为asp.page更改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最终为null。因此未设置ID值,因此未在浏览器中设置<div data-ID>属性。

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

1 个答案:

答案 0 :(得分:0)

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

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

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