2010-10-23 3 views
4

У меня есть asp: элемент управления TextBox на странице. Я устанавливаю его в TextMode = «MultiLine», я не устанавливаю несколько строк или столбцов. Я устанавливаю ширину и высоту в CSS для элемента управления.asp.net C# asp: TextBox, как удалить атрибуты cols и rows?

asp.net все еще добавляет, что я предполагаю, является атрибутом по умолчанию, строками и cols на визуализированном элементе управления. cols = "20" и rows = "2" это не проблема в любом здравомыслящем браузере, но в IE высота CSS игнорируется и отображаются только 2 строки пространства.

Как я могу предотвратить появление этих атрибутов на отображаемом элементе управления?

Edit:

Это вопрос только в IE8 в режиме совместимости, IE7 и IE6. Я не беспокоюсь о IE6, но IE7 должен работать.

ответ

1

Внешний CSS (do not mix inline and external CSS):

.myTextBox 
{ 
    height: 40px; 
    width: 220px; 
} 

<asp:TextBox ID="TextBox1" CssClass="myTextBox" runat="server"></asp:TextBox> 

Обратите внимание, что высота 100% даст вам по умолчанию высоту в одной строке - в основном не влияет. Если вам нужна многострочная линия, просто используйте пиксели в CSS.

Сформирована разметка:

<input name="TextBox1" type="text" id="TextBox1" class="myTextBox" /> 

CSS-установка высоты прекрасно работает, чтобы дать двойной эффект ряда.

Лучшим подходом здесь является проверка его в его базовой форме и progressively enhance в разных браузерах.

UPDATE

ASP.NET использует CSS значения вместо создания строк и столбцов эквиваленты. Тем не менее, он все еще работает правильно в FF 3.6 и IE8 (в режиме совместимости). Чтобы подавить эти атрибуты, я думаю, вам, возможно, придется создать настраиваемый элемент управления, наследующий от TextBox, и настроить метод рендеринга. Не уверен, но вы также можете попробовать удалить эти атрибуты с помощью JS.

Многострочная текстовое поле на самом деле HTML < текстовое поле > тег:

http://www.w3schools.com/TAGS/tag_textarea.asp

.myTextBox 
{ 
    height: 100px; 
    width: 220px; 
} 

HTML отображаются в режиме совместимости Internet Explorer 8:

<textarea name="TextBox1" rows="2" cols="20" id="TextBox1" class="myTextBox"> 

Я могу подтвердить многострочного функциональность верна в режиме совместимости IE8.

HTML отображается в Firefox:

<textarea name="TextBox1" rows="2" cols="20" id="TextBox1" class="myTextBox"> 

Интересно, что строки и столбцы установлены в «0» в окне свойств VS 2010 все же по-прежнему появляются в разметке, установлены в положении «2» и «20», соответственно! Эти ссылки могут помочь вам:

http://dotnet.itags.org/webcontrols/95106/

http://forums.asp.net/t/944368.aspx?Removing+Attributes+on+Rendering+WebControllink text

ПРИМЕЧАНИЕ: Если доктайп является XHTML 1.0 Transitional, строки и COLS атрибуты textarea являются требуется. Таким образом, вы можете обнаружить, что, столкнувшись со всей проблемой создания настраиваемого элемента управления для устранения этих атрибутов, эта страница не будет проверяться.

+0

TextMode = «Многострочный» необходим для элемента управления ASP, поэтому результатом является текстовое поле, а не вход. установка ширины и высоты на входе делает его правой стороной, но только отдельной строкой. – Justin808

+0

Justin, см. Мое обновление :) – IrishChieftain

+0

По какой-то нечетной причине это обязательные атрибуты. По какой-то другой причине только IE6 и IE7 заботятся о том, чтобы они были необходимы. Чтобы решить мою проблему, я поставил количество строк как можно ближе к высоте. Выглядит немного в старых браузерах, но каждый современный браузер игнорирует атрибуты. – Justin808

0

Он отлично работает, если вы используете Height и Width для TextBox. Вы попробовали это?

EDIT

При использовании Ширина, Высота управления толкает эти детали, как высота и ширина в стиле. Текстовое поле не поддерживает свойство Style непосредственно AFAIK.

<textarea name="ctl00$MainContent$TextBox1" id="MainContent_TextBox1" style="width: 200px; height: 300px; font-family: Courier New; font-size: larger;" rows="2" cols="20"/> 

При игнорировании установки высоты и ширины он просто не добавляет ширину и высоту в ваш контроль. Как вы можете видеть, строки = «2» Cols = «20» остаются неизменными.

<textarea name="ctl00$MainContent$TextBox1" id="MainContent_TextBox1" style="font-family: Courier New; font-size: larger;" rows="2" cols="20"/> 
+0

Это проблема только в IE8 в режиме совместимости, IE7 и IE6. Я не беспокоюсь о IE6, но IE7 должен работать. – Justin808

+0

Rahul, проблема в том, что строки = "2" и cols = "20" всегда есть. если у меня есть ширина стиля: и высота: высота игнорируется и используются строки = «2». Это значит, что мой рост на 100% игнорируется, а текстовое поле - всего лишь на 2 строки. – Justin808

4

Вместо использования asp:Textbox используйте <textarea /> и положите runat="server" в него, а атрибуты cols и rows не будут добавлены, если вы этого не сделаете.

<textarea id="txtContent" runat="server"></textarea> 
Смежные вопросы