2010-10-07 2 views
1

Как вы ссылаетесь на элемент управления asp.net на своей странице внутри функции или класса.Ссылка на элемент управления ASP внутри функции или метода класса

private void PageLoad(object sender, EventArgs e) 
{ 
    //An example control from my page is txtUserName 
    ChangeText(ref txtUserName, "Hello World"); 
} 

private void ChangeText(ref HtmlGenericControl control, string text) 
{ 
    control.InnerText = text; 
} 

Будет ли это изменяться текст элемента управления txtUserName?

Я попытался это и работает

private void PageLoad(object sender, EventArgs e) 
{ 
    ChangeText(txtUserName, "Hello World"); 
} 

private void ChangeText(TextBox control, string text) 
{ 
    control.Text = text; 
} 
+0

просто думал об этом после того, как писать вопрос, не пробовал еще –

+0

Является ли это на самом деле ваш 'Page_Load' событие код ASPX-код? Является ли функция, которую вы вызываете, в том же коде? Это для изменения 'InnerText' какого-либо элемента управления или для конкретного задания свойства' Text' элемента ''? – Kev

+0

вам просто нужно указать атрибут 'id', и вы можете ссылаться на него напрямую по его идентификатору. –

ответ

2

Да, он должен, если предположить, что это в соответствующей точке жизненного цикла страницы, так что ничего мур с ним потом. (Я не знаю подробностей жизненных циклов ASP.NET.

Однако стоит упомянуть, что здесь нет никаких оснований передавать его по ссылке. Это говорит о том, что вы не полностью понимаете передачу параметров в .NET - Я предлагаю вам прочитать my article on it. - как только вы понимаете, что (и типа различие ссылки/значения) все виды вещей могут стать более легким для вас

конечно, если вы уже пытался код, указанный в вопросе и нашел, что это не сработало, просьба дать более подробную информацию. В зависимости от типа txtUserName, это может быть даже то, что сref он не будет компилироваться, но безref он просто будет работать.

+0

Я не знал, что объекты передаются по ссылке –

+1

@geocine: Это не так. Объекты не передаются * вообще *. Однако ссылки передаются по значению. Прочитайте статью, с которой я связан в тексте. –

+0

@js В настоящее время я читаю вашу статью, однако проверил мое сообщение об обновлении и объясню, почему он работает. –

0

Если я что-то не хватает, все, что вам нужно сделать, это:

private void PageLoad(object sender, EventArgs e) 
{ 
    txtUserName.Text = "Hello World"; 
} 
+0

Я знаю это, я хочу создать метод не только для изменения текста позже, но и внутри класса. Вышеприведенное является просто прямым примером –

Смежные вопросы