2014-02-18 4 views
0

У меня есть проект C#, который имеет динамически созданный textbox, и когда форма отправляется, код позади должен получить значение textbox.Элемент управления ASP.NET Специальные символы

id из textbox содержит знак на $ доллар и при извлечении value он говорит empty.

Удивительно, если $ считается особым символом для ID или если есть способ справиться с этой проблемой?

// Вот мой пример кода

//Create Form 
foreach (DataRow row in setOfColumns.Rows) 
{ 
    TextBox txtBox = new TextBox(); 
    txtBox.ID = row["NameOfColumn"] + " textbox"; //Where row["NameOfColumn"] = "Money $" 
} 

//Display form on browser values 
name="ctl00$ContentPlaceHolder1$ctl00$Money $" 
id="ContentPlaceHolder1_ctl00_Money $" 
value="$3,392" 

//Submit Form 
DataTable dt = new DataTable(); 
foreach (Control c in controls) 
{ 
    if (c is TextBox) 
    { 
     DataRow dr = dt.NewRow(); 
     String txtValueCtrl = ((TextBox)c).Text.ToString(); //txtValueCtrl = "", it returns empty value for the textbox 
     dr["Value"] = txtValueCtrl; 

     dt.Rows.Add(dr); 
    } 
} 

//Once I remove the '$' from the txtBox.ID it is able to retrieve the value from the textbox 
+0

Просьба показать код, который дает нам хотя бы намек на то, как вы это делаете. Например, это элемент управления ASP.NET TextBox? –

+1

Когда форма отправлена, это не атрибут 'id', который используется как ключ в данных формы, а атрибут' name'. Каково имя текстового поля? – Guffa

+0

Возможный дубликат [Доступ к имени клиента клиента, а не идентификатор в ASP.NET] (http://stackoverflow.com/questions/5763557/accessing-control-client-name-and-not-id-in-asp-net) – Aristos

ответ

0

Если вы используете .NET 4.0 или выше, вы можете предотвратить это поведение, добавив атрибут «ClientIDMode» не «Static», который больше не вызывает идентификатор клиента, который будет изменен так, как вы видите.

Относительно вашей неспособности получить доступ к значению: Уверены ли вы, что режим просмотра включен для управления?

+0

У меня нет проблемы с изменением идентификатора элемента управления так, как он изменяется, так как я не ищу элемент управления на основе самого идентификатора, код просматривает все элементы на странице и выбирает конкретный для значения. Я попробовал установить для viewstate значение true, но оно по-прежнему не возвращает значение текстового поля. – user3325717

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