2014-01-15 2 views
2

string.format создает очень нечетный результат на html ниже. Я считаю, что это как-то связано с блоком inline if, но я еще не понял этого. Пожалуйста помоги!String.Format HTML

String.Format(@"<input type='text' 
         name='PostalCode' 
         id='PostalCode' 
         onfocus='if(this.value == '{0}') 
           {{ this.value = ''; }}' 
         value='{1}' 
         class='enter-postal' />", 
       "Enter Postal Code", "Enter Postal Code") 
+3

Что вы подразумеваете под * странным *? Он производит именно то, что вы сказали ему, чтобы произвести. – MarcinJuraszek

+1

Что он делает, и что вы хотите, чтобы он сделал? – RW4

+0

Вы используете '' 'внутри своего javascript-кода, даже если он используется как разделитель: используйте' '' (и избегайте его). Более того, я бы предложил написать вспомогательный класс для создания тега HTML с атрибутами ... –

ответ

1

В атрибуте onFocus, использование убежали в двойные кавычки.

String.Format(@"<input type='text' 
         name='PostalCode' 
         id='PostalCode' 
         onfocus=\"if(this.value == '{0}') 
          {{ this.value = ''; }}\" value='{1}' 
         class='enter-postal' />", 
       "Enter Postal Code", "Enter Postal Code") 
1

Вот попробуйте это один:

String.Format(@"<input type='text' name='PostalCode' id='PostalCode' onfocus='if(this.value == ""{0}"") {{ this.value = """"; }}' value='{1}' class='enter-postal' />", "Enter Postal Code", "Enter Postal Code") 
+2

@ TheC4Fox строго, ** разные ** escape-символы необходимы; Чтобы избежать '' ', используется' '' '. –

+1

Я исправил свой ответ – AMember

3

Он не делает ничего странного, что я могу видеть, поэтому, не зная, что вы ожидаете, что я не уверен, что проблема есть.

Я замечаю ошибку в onfocus='if(this.value == '{0}') {{ this.value = ''; }}' тем, что у вас есть одинарные кавычки в атрибуте, а также JS, который не будет работать. Попробуйте:

String.Format(@"<input type='text' name='PostalCode' id='PostalCode' onfocus=""if(this.value == '{0}') {{ this.value = ''; }}"" value='{1}' class='enter-postal' />", 
"Enter Postal Code", "Enter Postal Code") 

С переменными, а не литералов, вы также хотите сделать .Replace("'", "\\'") так, что вы не до конца с большим количеством того же вопроса в связи с апострофом в данных.

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

  • Нет связанных вопросов^_^