如何从LiteralControl获取href
本文关键字:获取 href LiteralControl | 更新日期: 2023-09-27 18:26:07
我需要从LiteralControl
中读取href并为其添加一些属性:
标记;
<a id="aMyAnchor" runat="server" href="bob.com">click me</a>
以下是我尝试过的:
string url= "bob.com";
var myAnchor = divLinkContainer.Controls
.Cast<LiteralControl>()
.Where(a => a.Attributes["href"]
.Contains(url)).First();
但是,LiteralControl
没有attributes属性。。。
注意:我知道我可以通过它的id直接访问链接,但这只是因为我简化了示例代码
编辑:
此:
string url= "bob.com";
var myAnchor = divLinkContainer.Controls
.Cast<HtmlAnchor>()
.Where(a => a.HRef
.Contains(url)).First();
结果如下:
无法将类型为"System.Web.UI.LeralControl"的对象强制转换为类型"System.Web.UI.HtmlControls.HtmlAnchor".
您的divLinkContainer
节点可能包含其他无法强制转换为HtmlAnchor
类型的节点。要仅选择类型为HtmlAnchor
的节点,请使用Enumerable.OfType
:
var myAnchor = divLinkContainer.Controls
.OfType<HtmlAnchor>()
.Where(a => a.HRef.Contains(url))
.First();
var myAnchor = divLinkContainer.Controls
.Cast<Control>()
.Where(a => a is HtmlAnchor).Select(a=>(HtmlAnchor)a)
.Where(a => a.HRef.Contains(url))
.First();
我们的想法是将Cast与最可能/最相关的基类一起使用,并确保所有将要强制转换的控件都继承该类型。
将其转换为HtmlAnchor
,然后可以使用它的href
属性。
您可以将所需的目标对象强制转换为"HtmlAnchor"类型,并使用"HRef"属性进行操作。
将href分配给另一个控件的value属性并隐藏该控件。