我需要从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
没有属性属性...
注意:我知道我可以通过其ID直接访问该链接,但这只是因为我使示例代码变得简单。
修改
此:
string url= "bob.com";
var myAnchor = divLinkContainer.Controls
.Cast<HtmlAnchor>()
.Where(a => a.HRef
.Contains(url)).First();
结果如下:
无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型 'System.Web.UI.HtmlControls.HtmlAnchor'。
答案 0 :(得分:4)
您的divLinkContainer
节点可能包含无法转换为HtmlAnchor
类型的其他节点。要仅选择HtmlAnchor
类型的节点,请使用Enumerable.OfType
:
var myAnchor = divLinkContainer.Controls
.OfType<HtmlAnchor>()
.Where(a => a.HRef.Contains(url))
.First();
答案 1 :(得分:3)
var myAnchor = divLinkContainer.Controls
.Cast<Control>()
.Where(a => a is HtmlAnchor).Select(a=>(HtmlAnchor)a)
.Where(a => a.HRef.Contains(url))
.First();
我们的想法是使用最可能/相关基类的Cast,并确保所有要转换的控件都继承该类型。
答案 2 :(得分:1)
将其转换为HtmlAnchor
,然后您可以使用它的href
属性。
答案 3 :(得分:0)
您可以将所需的目标对象转换为“HtmlAnchor”类型,并使用“HRef”属性进行操作。
答案 4 :(得分:0)
将href分配给另一个控件的value属性并隐藏该控件。