如何强制转换ASP.NET标签
本文关键字:NET 标签 ASP 转换 何强制 | 更新日期: 2023-09-27 18:20:21
我有一个ASP.NET页面。我有这样的标签:
<label id="CalistigiFirmaUnvanLabel" runat="server" style="width: 100%; float: left; font-size: 10pt; font-weight: bold; font-family: Calibri">
Çalıştığı Kurumun Unvanı</label>
每15页有10个。在某种条件下,我想更改这些标签的innerText。因此,在页面加载或初始化中,我想写这样的东西:
foreach (Control ctrl in mainDiv.Controls)
{
if (ctrl.GetType().BaseType.Equals(CalistigiFirmaUnvanLabel.GetType())
{
//if this labels innerText is in my Dictionary, then change it like (Label).InnerText = sth;
}
}
但是,"标签"转换不起作用。当我看到calistigifirmaVergiNoLabel
的类型时,它说它是System.Web.UI.HtmlControls.HtmlGenericControl
。当我在内部if中为ctrl强制转换Label时,它没有属性"InnerText"。我该如何铸造?此外,这段代码也使用div。我只想要标签。我删除了BaseType,但它没有输入if语句。
您也可以访问C#或div中的html标签(HtmlGenericControl或(HtmlGenericControl("label")),并在调用findControl()后将其类型转换为各自的类型。如果你想在没有findcontrol和类型转换的情况下访问它,你需要有"asp"标记前缀,比如:
<asp:Label
并且您需要在控件属性中包含runat="server",以便后面的代码可以直接访问它。(因此它在intelligense中为您显示)
您可以将runat="server"
属性与HtmlGenericlControl
一起使用,如下所示:
<label id="CalistigiFirmaUnvanLabel" runat="server" style="width: 100%; float: left; font-size: 10pt; font-weight: bold; font-family: Calibri">Çalıştığı Kurumun Unvanı</label>
当应用runat="server"
属性时,您可以访问代码中的标签,如下所示:
string labelText = CalistigiFirmaUnvanLabel.InnerText;
然而,这个答案假设页面上的10个标签中的每一个都有不同的ID。
Label=<asp:Label id="x" runat="server" />
<label>
被翻译为HtmlGenericControl;但是,您应该能够使用它来弄清楚底层标签是什么,检查标签标签,并进行相应的处理。或者使用等效的服务器端代码,这样服务器端代码就可以按预期工作。
此外,他们你可以做:
if (ctrl is Label)
{
string text = ((Label)ctrl).Text;
}