asp.net c # asp: TextBox, как удалить атрибуты cols и row? - PullRequest
4 голосов
/ 23 октября 2010

У меня есть элемент управления asp: TextBox на странице.Я устанавливаю его в TextMode = "MultiLine", я не устанавливаю количество строк или столбцов.Я устанавливаю ширину и высоту в CSS для элемента управления.

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

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

Редактировать:

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

Ответы [ 3 ]

4 голосов
/ 21 октября 2011

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

<textarea id="txtContent" runat="server"></textarea>
1 голос
/ 23 октября 2010

Внешний CSS ( не смешивает встроенный и внешний 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 прекрасно работает, чтобы создать эффект двойной строки.

Наилучший подход здесь - протестировать его в его основной форме и постепенно улучшить в разных браузерах.

ОБНОВЛЕНИЕ

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

Многострочное текстовое поле на самом деле представляет собой тег HTML

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

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

HTML-код, отображаемый в режиме совместимости IE8:

<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+WebControl текст ссылки

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

0 голосов
/ 23 октября 2010

Работает нормально, если вы используете Высота и Ширина для TextBox.Вы пробовали это?

РЕДАКТИРОВАТЬ

Когда вы используете Ширина, Высота, элемент управления выдвигает эти детали как Высота и Ширина в стиле.Textbox не поддерживает свойство 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"/>

Если вы игнорируете настройку высоты и ширины, оно просто не добавляет ширину и высоту к вашему элементу управления.Как вы можете видеть, rows = "2" Cols = "20" остается прежним.

<textarea name="ctl00$MainContent$TextBox1" id="MainContent_TextBox1" style="font-family: Courier New; font-size: larger;" rows="2" cols="20"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...