Во-первых, посмотрите , как спросить
Исходя из этого, я бы начал в руководстве разработчика googles , вам нужно запросить ключ API. Затем попробуйте вставить этот код с помощью ключа API, вставленного в ваш html-код
, после чего, возможно, вы сможете немного углубиться в детали того, что означает «это не работает». Вы получаете какой-либо вывод в консоли, он выключил компьютер? любая дополнительная деталь поможет нам помочь вам!
Нет, нет никакого прямого эквивалента, но если Вы используете v3.5 Платформы, можно добавить эту функциональность довольно легко с помощью дополнительного метода. Например:
Imports System.Runtime.CompilerServices
Public Module Extensions
<Extension()> _
Public Sub SetTag(ByVal ctl As Control, ByVal tagValue As String)
If SessionTagDictionary.ContainsKey(TagName(ctl)) Then
SessionTagDictionary(TagName(ctl)) = tagValue
Else
SessionTagDictionary.Add(TagName(ctl), tagValue)
End If
End Sub
<Extension()> _
Public Function GetTag(ByVal ctl As Control) As String
If SessionTagDictionary.ContainsKey(TagName(ctl)) Then
Return SessionTagDictionary(TagName(ctl))
Else
Return String.Empty
End If
End Function
Private Function TagName(ByVal ctl As Control) As String
Return ctl.Page.ClientID & "." & ctl.ClientID
End Function
Private Function SessionTagDictionary() As Dictionary(Of String, String)
If HttpContext.Current.Session("TagDictionary") Is Nothing Then
SessionTagDictionary = New Dictionary(Of String, String)
HttpContext.Current.Session("TagDictionary") = SessionTagDictionary
Else
SessionTagDictionary = DirectCast(HttpContext.Current.Session("TagDictionary"), _
Dictionary(Of String, String))
End If
End Function
End Module
Затем на Ваших страницах ASP.NET сначала принесите свои расширения в объем, например:
Imports WebApplication1.Extensions
... и затем используйте его Ваши средства управления, как желаемый:
TextBox1.SetTag("Test")
Label1.Text = TextBox1.GetTag
БОЛЕЕ ПОЗДНЕЕ РЕДАКТИРОВАНИЕ: и если Вы действительно, действительно не хотите хранить свои теги в объекте Сессии, возможно наполнить их в Ваше Состояние отображения вместо этого. Это будет, конечно, означать, что Ваши теги будут выставлены в разметке страницы, отправленной пользователю (хотя в запутываемой форме), и, к сожалению, что некоторое отражение-fu требуется, так как свойство ViewState Страницы отмечено, как 'защищено' по некоторым причинам.
Так, этот код нужно в значительной степени рассмотреть в целях развлечений только, если Вам на самом деле не нравится повышать брови во время обзоров кода:
<Extension()> _
Public Sub SetTag(ByVal ctl As Control, ByVal tagValue As String)
ViewState.Add(ctl.ID & "_Tag", tagValue)
End Sub
<Extension()> _
Public Function GetTag(ByVal ctl As Control) As String
Return ViewState(ctl.ID & "_Tag")
End Function
Private Function ViewState() As Web.UI.StateBag
Return HttpContext.Current.Handler.GetType.InvokeMember("ViewState", _
Reflection.BindingFlags.GetProperty + _
Reflection.BindingFlags.Instance + _
Reflection.BindingFlags.NonPublic, _
Nothing, HttpContext.Current.CurrentHandler, Nothing)
End Function
ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ (я обещаю...). И вот способ избавиться от отражения: во-первых, создайте новый класс, чтобы выставить свойство ViewState с применимым уровнем защиты, затем изменить Ваш Код - Позади (.aspx.vb) классов для наследования этого вместо сети. UI.Page, например:
Public Class PageEx
Inherits System.Web.UI.Page
Friend ReadOnly Property ViewStateEx() As Web.UI.StateBag
Get
Return MyBase.ViewState
End Get
End Property
End Class
Теперь, в Вашем модуле расширений, можно получить доступ к этому недавно определенному свойству как:
Private Function ViewState() As Web.UI.StateBag
Return DirectCast(HttpContext.Current.Handler, PageEx).ViewStateEx
End Function
Все еще определенный взлом, но намного более приемлемый, чем использование отражения...
Можно также использовать составной шаблон вместо того, чтобы использовать наследование:
public class TaggedControl<TControl, TTag> : Control
where TControl : Control, new()
{ public TaggedControl() {this.Control= new TControl();}
public TControl Control {get; private set;}
public TTag Tag {get; set;}
protected override void CreateChildControls(){Controls.Add(Control);}
}
var textBox = new TaggedControl<TextBox, string>();
textBox.Tag = "Test";
label.Text = textBox.Tag;
Можно добавить атрибуты к некоторым средствам управления, но это, кажется, добавляет некоторый противный HTML вокруг представленного управления, чего-то как <div attrName="attrValue">
... (это мог бы быть промежуток хотя),
Я не уверен, что свойство тегов сделало в VB6, но возможно Вы ищете Attributes
свойство Веб-элементов управления:
MyImgCtrl.Attributes["myCustomTagAttribute"] = "myVal";
Вы спросили о ASP.NET, но vb6 был настольным языком и так был, он 'отмечен' средства управления. VBScript, используемый для классического asp, действительно не имел понятия управления.
Теперь в .NET, для настольных средств управления можно использовать наследование, которое намного более мощно, чем старое Свойство тегов так или иначе. Наследование относится к веб-элементам управления также, хотя действительно необходимо быть осторожны относительно использования его для содержания состояния.
Tag
свойство всегда было странной подобной бородавке вещью, которая была полезна как что-то прочь, которого Вы могли подвесить любые данные, которые Вы хотели. Но это не было со строгим контролем типов, и это действительно не сделало для когерентного дизайна. Само свойство, просто подвешенное от управления как странная кнопка. Они сохранили его в WinForms для упрощения кода портирования от VB6. Новый WPF Control
класс не имеет a Tag
.
С.NET у Вас есть полная объектная ориентация и соответствующий полиморфизм типа, таким образом, можно сильно-ввести любую дополнительную информацию, Вы хотите связаться с кодом, является ли это в подклассе или a Dictionary<Control,TValue>
.
Если это находится на сингле Page
запрос и Вы хотите общее решение Словарь на самой Странице для каждого типа значения (например, Dictionary<Control,string>
и Dictionary<Control,BusinessObject>
) должен быть точно, в чем Вы нуждаетесь.
Можно использовать средства управления asp:Hidden, чтобы хранить данные между сообщениями. Как будет говорить, нет никакого смысла иметь свойство тегов, если Вы проигрываете, это - значение.