我们的应用程序使用一些自定义控件,其中一些控件生成了一些相当复杂的HTML输出。我们现在开始使用AngularJS,它使用自己的HTML属性,如ng-hide=""
和ng-show=""
。
我希望能够结合使用这些东西,以防止我们手动写出控件内的所有HTML,维护属性的intellisense,并在as-上添加额外的ng-*
属性需要的基础。
假设我有一个名为button
的控件,它上面有一堆自定义属性。我想在像这样的角度页面上使用它:
<MyControl:Button runat="server" Text="Save" state="Success" ng-show="CanBeSaved()" ng-click="Save()" />
并输出以下HTML
<button id="ctrl_1234" class="btn btn-success" ng-show="CanBeSaved()" ng-click="Save()">Save</button>
在控件内部,如何获取所有属性(即使是控件不知道的属性)并仅添加与角度相关的属性?
我的第一次尝试/伪代码
Dim sb = New StringBuilder
Dim attrs = Me.Attributes.Keys
For Each a As String In attrs
If a.StartsWith("ng-") Then
sb.Append(" " + a)
End If
Next
答案 0 :(得分:2)
我为Page_Load提供了一个简单的功能,它将列出ASP Properties&amp; HTML属性,如果这将对您有所帮助。我假设如果你以迭代形式看到它们会解决你的问题吗?
Public Sub PageLoad() Handles Me.Load
' source:
' http://msdn.microsoft.com/en-us/library/system.componentmodel.bindableattribute%28v=vs.110%29.aspx
' Show server-side properties
Dim attributes = System.ComponentModel.TypeDescriptor.GetProperties(ControlID) ' Your Control ID
For Each item As System.ComponentModel.PropertyDescriptor In attributes
System.Diagnostics.Debug.Print("Name=" & item.Name)
System.Diagnostics.Debug.Print("Category=" & item.Category)
' You could only show certain category if you specify property categories like:
' <Category("MyCategory")> _
If item.Category = "MyCategory" Then
End If
Next
' source:
' I used your existing code to iterate the collection & print
' SHow HTML attrs
Dim attrs As System.Web.UI.AttributeCollection = ControlID.Attributes ' Your Control ID
For Each a As String In attrs.Keys
System.Diagnostics.Debug.Print(a & "=" & attrs(a))
Next
End Sub