尝试在 MasterPage 中查找控件时出现问题
Posted
技术标签:
【中文标题】尝试在 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值,所以浏览器中没有设置<div data-ID>
属性。
有谁知道我做错了什么?如何从代码隐藏文件中设置 data-ID 属性?
【问题讨论】:
【参考方案1】:当您使用母版页时,查找控件会比较棘手。你应该这样做:
var divDataID = Master.FindControl("ContentPlaceHolder").FindControl(id: "fullTextArticle") as HtmlControl;
其中"ContentPlaceHolder"
是母版页中的 ContentPlaceHolder ID。
【讨论】:
你好 kblok。我的原始代码确实具有 runat="server" 属性,但是我在这里发布时忘记包含(我已经更新了我的帖子)。我在代码中的方法是将 识别为服务器控件并执行存储过程,只是我的 HtmlControl 变量 dataDivID 为空。你知道我该如何解决这个问题吗? @webguy 是另一个服务器控件中的 div 吗? FindControl 不是递归的。我刚刚在本地测试过,它可以工作。 位于内容页面上,不,它没有嵌套在另一个服务器控件中。但是,在我的母版页中, 标记包含一个 @webguy 检查新答案。 你太棒了!!您指定母版页占位符 ID 的解决方案起到了作用。它工作得很好!我被困在这个问题上很长时间了,你让它变得简单容易修复。我真的很感谢你的帮助!这篇文章应该对这里的其他编码人员有所帮助,因为这种情况是独一无二的,以前从未解决过。以上是关于尝试在 MasterPage 中查找控件时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 https://pub.dartlang.org 查找包 ABC 时出现 TLS 错误