asp.net如何将 html 属性得到 ASP/vb.net 代码隐藏

标签: Vb.net Asp.net HTML
发布时间: 2017/3/26 5:29:57
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

从 asp: tabcontainer 变为引导导航选项卡

<div id="Tabs2" runat="server" role="tabpanel">
                <ul class="nav nav-tabs" role="tablist">
                    <li class="active"><a href="#card" aria-controls="card" role="tab" data-toggle="tab" tabindex="0">Card</a></li>
                    <li><a href="#term" aria-controls="term" role="tab" data-toggle="tab" tabindex="1">Term</a></li>
                    <li><a href="#account" aria-controls="account" role="tab" data-toggle="tab" tabindex="2">Account</a></li>
                    <li><a href="#counter" aria-controls="counter" role="tab" data-toggle="tab" tabindex="3">Counter</a></li>
                    <li><a href="#allsust" aria-controls="allsust" role="tab" data-toggle="tab" tabindex="4">All Suspect</a></li>

                </ul>
            </div

然后只需要 tabindex 获得向检查条件,这是从我的 asp: tabcontainer 代码的 html

Protected Sub imgPrev_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles imgPrev.Click
    GridView1.PageIndex = 0
    TextDate.Text = Func.Date2YYMMDD(DateAdd(DateInterval.Day, -1, BizFunc.YYMMDD2Date(TextDate.Text)))
    Select Case TabContainer1.ActiveTabIndex
        Case 0 : btnSearchCard_Click(sender, e)
        Case 1 : btnSearchTerm_Click(sender, e)
        Case 2 : btnSearchAccount_Click(sender, e)
        Case 3 : btnSearchCounter_Click(sender, e)
        Case 4 : btnSearchSuspect_Click(sender, e)
    End Select
End Sub

我试着用 Tabs2.attribute 但我不知道下一步我应该做

解决方法 1:

您不能访问的 link 标记 <a> 从 ASP.NET 中的服务器,除非它有 runat="server" 属性。这里是您的选项︰


1.使用 <ASP:Hyperlink> 标记而不是 <a> 标记。

如果你不介意让 ASP 为您呈现的标记,只是使用其本机超链接控件。

优点︰你可以访问和操纵元素从服务器和客户端使用 CssClass 和 CSS,javascript 的组合等。

缺点︰标签将确实呈现由服务器,所以如果你有和你一起工作的一名前端工程师,他可能会处于不利的地位,如果他想要修改布局。


2.使用维纳的解决方案并将属性值存储在 HiddenField

创建 <ASP:HiddenField> 里面每个列表项的值等于相应的 tabindex <a> 属性。

优点︰ 你可以使用 javascript 设置的值 HiddenField,所以如果你要动态地构建领域,它会计算出。而且,没有服务器端元素呈现有必要像在选项 #1。如果你是用 javascript 体面,这实际上可能是最完美的解决方案。

缺点︰由服务器访问实际的 tab 键索引属性将从其相应的解耦 <a> 标记。充其量,这将是一个额外的警告,要记住当工作在该页上,和最坏的情况会引起意外的行为,例外, (也可能不)生成错误,等以后。


3.添加 runat="server" 属性的链接元素。

这将使服务器能够看到和访问元素 (尽管您可能必须使用一个或两个 DirectCast 函数)。我会包括一些代码在结束了这个答案,显示一个没有转换函数的方法。

优点︰简单。将有可能实现你想在这特定的情况下做什么。

缺点︰一些注意事项存在时包装内 HtmlGenericControls,服务器控件,所以你要记住这一点,如果你决定要做更多的前端代码。要避免这种情况,你可能会改变你 <div> 包装成 <asp:PlaceHolder> 标记 — — 我相信获取呈现为一个 div,无论如何。


如果你想要去与选项 #3,这里是你会怎么做示范︰

HTML

<asp:PlaceHolder runat="server" ID="test_PH">
            <ul id="test_UL">
                <li><a id="link1_undetectable" href="#" tabindex="0">Tab 0 - This will not be detected.</a></li>
                <li><a id="link2_undetectable" href="#" tabindex="1">Tab 1 - This will not be detected.</a></li>
                <li><a id="link3_undetectable" href="#" tabindex="2">Tab 2 - This will not be detected.</a></li>
                <li><a id="link4_undetectable" href="#" tabindex="3">Tab 3 - This will not be detected.</a></li>
                <li><a id="link5_undetectable" href="#" tabindex="4">Tab 4 - This will not be detected.</a></li>
                <li><a id="link6" href="#" runat="server" tabindex="5">Tab 5</a></li>
                <li><a id="link7" href="#" runat="server" tabindex="6">Tab 6</a></li>
                <li><a id="link8" href="#" runat="server" tabindex="7">Tab 7</a></li>
                <li><a id="link9" href="#" runat="server" tabindex="8">Tab 8</a></li>
                <li><a id="link10" href="#" runat="server" tabindex="9">Tab 9</a></li>
            </ul>
        </asp:PlaceHolder>

VB.NET

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        Dim ph As PlaceHolder = test_PH, sb As New StringBuilder() ' The string builder is just for demonstration purposes.

        For Each c As HtmlAnchor In ph.Controls.OfType(Of HtmlAnchor)() ' This will loop through the HtmlAnchors without throwing an exception.
            sb.AppendLine(String.Format("ID: ""{0}""; Tab-index: ""{1}""", c.ID, c.Attributes("tabindex"))) ' This builds a string for demo purposes.
        Next

        MsgBox(sb.ToString) 'Show the string for demo purposes.
    End Sub

结果......

Results

官方微信
官方QQ群
31647020