2016-06-14 6 views
10

Когда я использую автодополнение в VisualStudio 2010 в моем .aspx приложения, существует различные стандартные доработки при закрытии тегов управления:ASP.NET закрывающего тег

<asp:CheckBox /> 
<asp:Label></asp:Label> 

Есть ли объяснения такого поведения?

<asp:CheckBox></asp:CheckBox> 
<asp:Label /> 

Недействителен.

ответ

7

закрытие ярлыка как то

<asp:Label runat="server"></asp:Label> 

, потому что обычно мы что-то типа между

<asp:Label runat="server" ID="lblOne">better start programming now</asp:Label> 

, которое не относится к флажку, что мы вводим внутри него

<asp:CheckBox runat="server" Text="enable" ID="cbOne" /> 

У нас на обоих элементах поле Text, почему на тот, который мы предпочитаем выписывать сторона ... Посмотрите на этот пример, на ярлык или на другие аналогичные элементы управления, текст, который мы, возможно, придется писать, может включать символы, которые недопустимы внутри текстового свойства, возможно, сложный стиль CSS или что-то еще ... Проверка коробка с другой стороны, только включают в себя небольшой текст (да, нет, что-то подобное)

<asp:Label ID="lblLabel" runat="server"> 
    This is a <b>"label"</b> 
    <br />And one more line 
</asp:Label> 

and more example that compiles 

<asp:Label ID="lblLabel" runat="server"> 
    This is a <b>"label"</b> 
    <br />And one more line 
    <asp:Literal runat="server" ID="ltrOneMore">One more Control Inside</asp:Literal> 
</asp:Label> 


---but this is not compile-- 

<asp:Label ID="lblLabel2" runat="server" 
    Text="This is a <b>"label"</b> 
    <br /> and one more line" 
    /> 

в конечном счете, будет принято решение о том, что марки сделать - может быть, мы должны спросить их для реальной реальной причины ,

Теперь это также не компилировать

<asp:CheckBox runat="server" ID="cbMyChbx">one<asp:CheckBox> 

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

+0

но _something between_ это свойство текста, который существует в 'осины: CheckBox' слишком –

+0

Этот ответ объясняет, например, 'GridView' или' Panel', потому что там вам нужно писать другие элементы управления. Для 'Label' вы также можете написать' ', как сказал Senthil Natarajan –

+0

@Shneeg Да, вы можете, но внутри метки, или в буквальном формате вам может потребоваться ввести некоторые элементы управления html (например, полужирный, курсив), которые вам нужно записать в сторону. '[ParseChildren (false)]' - это то, как вы это программируете, а не причина, по которой вы поместите его с истинным или ложным. Я сделаю небольшое обновление сейчас – Aristos

5

<asp:CheckBox /> Поскольку элемент не имеет содержимого, вы можете закрыть тег с /> вместо того, чтобы использовать отдельный закрывающий тег

<asp:Label></asp:Label> or <asp:Label /> 

Отображает статический текст на странице веб-форм и позволяет манипулировать им программно.

Подробнее об этом Web Server Control

7

Это потому, что Label управления ASP.NET оформлен с ParseChildrenAttribute с ParseChildren(false) в то время как CheckBox нет.

Вы можете поддержать такое же поведение ти пользовательских элементов управления, например, с помощью следующего кода, Visual Studio будет вести себя, как ярлык, если вы используете MyControl в веб-редакторе форм:

[ParseChildren(false)] 
public class MyControl : WebControl 
{ 
    ... 
} 
1

Все ответы выше действительны, но что-то дополнительное. Все элементы управления asp в конечном итоге отображаются как элементы управления HTML, а также определяют, как ведут себя элементы управления asp. Напр.это не обязательно, чтобы текст в метке всегда устанавливаются как

<asp:Label runat="server" ID="lblOne">better start programming now</asp:Label> 

это может быть также сделано следующим образом

<asp:Label runat="server" ID="lblOne" Text="better start programming"></asp:Label> 

теперь оба правилен формат, так что это не действует, чтобы сказать, что какой-либо контроль который нуждается в контенте, будет иметь отдельный закрывающий тег. Это также зависит от того, как он отображается в HTML. например, по умолчанию asp Label отображается как диапазон и не соответствует стандартам XHTML. Надеюсь, это ясно, всегда думайте о том, как это будет сделано, и ASP пытается придерживаться того, что в конечном итоге будет оказано.

веселит

+0

как насчет ' лучше начать программирование сейчас' –

+0

В чем ваш вопрос? – snit80

+0

Почему есть выбор, если вы не можете использовать оба одновременно? –

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