Помимо решений по замене строк, вы также можете взглянуть на Code.eval_string .
Таким образом, строка будет проанализирована, и вы получите список, который вы ищете;
{list, _} = Code.eval_string "[40.45694301152436, -3.6907402812214514]"
# {[40.45694301152436, -3.6907402812214514], []}
Короткий ответ не с веб-формами, идентификатор может всегда переписываться в зависимости от вложения элемента. Можно получить доступ к идентификатору через свойство ClientID, таким образом, Вы могли установить идентификаторы в переменные в сценарии в конце страницы/управления, тогда помещает их в jQuery.
что-то вроде этого:
<asp:button id="ImAButton" runat="server">Click Me</asp:button>
<script type="text/javascript">
var buttonId = "<%=ImAButton.ClientId%>";
$("#"+buttonId).bind('click', function() { alert('hi); });
</script>
Это - взлом, который я знаю, но это будет работать. (Я должен отметить непосвященным, я использую $ Прототипа, добираются идентификационным методом там)
Один метод должен переопределить идентификатор вручную:
public override string UniqueID
{
get { return this.ID; }
}
public override string ClientID
{
get { return this.ID; }
}
Rick Strahl записал сообщение в блоге еще с некоторой информацией о том подходе.
Взгляд на ASP.NET MVC - это обращается к иерархиям объектов излишества, которые ASP.NET генерирует по умолчанию.
Этот сайт записан в MVC (я думаю) - смотрят на, он - структура. Если бы я был работающий над новым проектом прямо сейчас, то я рассмотрел бы его сначала
, Если Вы застреваете с основным ASP.NET затем быть тщательным переопределением ClientID и UniqueID - это имеет тенденцию повреждать много веб-элементов управления.
лучший способ, которым я нашел, состоит в том, чтобы раздать нечитабельный ClientID к JavaScript.
Можно расширить средства управления .net и заставить их возвратить фактический идентификатор, когда связанные свойства называют.
ClientID является идентификационным атрибутом, и UniqueID является атрибутом имени элементов HTML. Таким образом, при создании текстового поля как следующее и использующий это вместо текстового поля в платформе Вы делаете идентификатор и называете рендеринг атрибутов как то же как идентификатор серверной стороны.
public class MyTextBox : TextBox
{
public override string ClientID { get { return ID; } }
public override string UniqueID { get { return ID; } }
}
Для использования этого нового пользовательского элемента управления в основном зарегистрируйте это управление, как Вы сделали бы для пользовательского пользовательского элемента управления (можно сделать, находится в web.config, таким образом, Вы не должны будете делать этого на всех своих страницах):
<%@ Register Assembly="MyLibrary" NameSpace="MyLibrary.WebControls" TagPrefix="MyPrefix" %>
И использование это как Вы использовало бы текстовое поле:
<MyPrefix:MyTextBox ID="sampleTextBox" runat="server" />
Лично, я использую ряд методов, я разработал для образования моста серверной стороны ASP.NET "волшебство" (я должен все же использовать MS материал MVC все же), и мой клиентский код из-за порчи идентификаторов, которая происходит. Вот просто тот, который может или не может оказаться полезным:
public void RegisterControlClientID(Control control)
{
string variableDeclaration = string.Format("var {0} = \"{1}\";", control.ID, control.ClientID);
ClientScript.RegisterClientScriptBlock(GetType(), control.ID, variableDeclaration, true);
}
Так, в Вашем серверном коде Вы просто называете это и передачу в экземпляре управления, для которого Вы хотите использовать более дружественное название. Другими словами, во время время проектирования , у Вас может быть текстовое поле с идентификатором "m_SomeTextBox", и Вы хотите быть в состоянии записать свой JavaScript с помощью того же самого имени - Вы просто назвали бы этот метод в своем серверном коде:
RegisterControlClientID(m_SomeTextBox);
И затем на клиенте следующее представляется:
var m_SomeTextBox = "ctl00_m_ContentPlaceHolder_m_SomeTextBox";
Тот способ, которым весь Ваш код JavaScript может быть довольно незнаком о том, что ASP.NET решает назвать переменной. Предоставленный, существуют некоторые протесты к этому, такой как тогда, когда у Вас есть несколько экземпляров управления на странице (из-за использования нескольких экземпляров пользовательских элементов управления, что у всех есть экземпляр m_SomeTextBox в них, например), но обычно этот метод может быть полезен для Ваших наиболее главных потребностей.
То, что я обычно делаю, создают общую функцию, которая получает название поля. Это добавляет обычный префикс "asp.net" и возвращает объект.
var elemPrefix = 'ctl00-ContentPlaceHolder-'; //replace the dashes for underscores
var o = function(name)
{
return document.getElementById(elemPrefix + name)
}
, С которым можно использовать этот вид вызовов в jQuery
$(o('buttonId')).bind('click', function() { alert('hi); });
Вы определенно не хотите к твердому коду asp.net-сгенерированный идентификатор в свой CSS, потому что это может измениться при реконструкции вещей на странице таким способом, которым изменяется дерево управления.
Вы правы, что идентификаторы CSS имеют свое место, таким образом, я проигнорировал бы предложения, чтобы просто использовать классы.
различные взломы JavaScript, описанные здесь, являются излишеством для небольшой проблемы. Так наследовался классу и переопределяет свойство ID. И, конечно, не полезно предложить переключиться на MVC, когда все, что Вы хотите сделать, осуществляют рефакторинг некоторый CSS.
Просто имеют отдельные отделения и промежутки, для которых Вы нацелены с CSS. Не будьте нацелены на средства управления ASP.NET непосредственно, если Вы захотите использовать идентификаторы.
<div id="DataGridContainer">
<asp:datagrid runat=server id="DataGrid" >
......
<asp:datagrid>
</div>
При использовании jQuery тогда, у Вас есть загрузки селекторы CSS и jQuery custome селекторы в Вашем распоряжении для предназначения для элементов на странице. Так вместо того, чтобы выбрать кнопку отправки он - идентификатор, Вы могли сделать что-то как:
$('fieldset > input[type="submit"]').click(function() {...});
Я вижу, что система .NET кажется менее интуитивной, но дайте ей шанс. По моему опыту, на самом деле это приводит к созданию более чистого кода. Конечно
<asp:button id="ImAButton" runat="server">Click Me</asp:button>
<script type="text/javascript">
var buttonId = <%=ImAButton.ClientId%>
$(buttonId).bind('click', function() { alert('hi); });
</script>
работает нормально. Но он страдает отсутствием модульности. На самом деле вам нужно что-то вроде этого:
<script type="text/javascript">
function MakeAClick(inid)
{
$(inid).bind('click', function() { alert('hi); });
}
</script>
, а затем с вашим кодом на стороне java или на стороне C # вы вызываете MakeAClick. Конечно, на стороне C # это имеет больше смысла, вы просто указываете здесь ClientID.
Возможно, это настоящая проблема с кодом, который вы просматриваете.