Лично я использую набор методов, которые я разработал для преодоления серверной "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), но обычно этот метод может быть полезным для ваших самых основных потребностей.