Генерация разметки в ASP.NET 4.0

advertisement
Генерация разметки в
ASP.NET 4.0
Андрей Веселов
Мета-теги
Новые свойства класса Page: MetaKeywords и MetaDescription.
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="ASPNETMarkupDemo._Default"
MetaKeywords="ASP.NET, WebForms",
MetaDescription="Демонстрация генерации разметки" %>
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.MetaKeywords = "ASP.NET, WebForms";
this.MetaDescription = "Демонстрация генерации разметки";
}
}
<head>
<title>Demo page</title>
<meta name="keywords" content="ASP.NET, WebForms" />
<meta name="description" content="This is the description of my page" />
</head>
Изменения в генерации разметки
Обратная совместимость с ASP.NET 3.5
<system.web>
<pages controlRenderingCompatibilityVersion="3.5 | 4.0" />
</system.web >
Генерация разметки в ASP.NET 4.0:
• используется режим XHTML 1.0 Strict;
• новые правила создания разметки для элементов с Enabled="false";
• элементы div для скрытых полей не влияют на другие секции;
• разметка для Menu генерируется на базе семантических стандартов;
• элементы контроля значений (validation) не генерируют inline-стили;
• не добавляется атрибут border со значением 0.
Разметка при Enabled="false"
Использование CSS класса aspnetdisabled вместо атрибута disabled:
<span id="Span1" class="aspnetdisabled">ASP.NET 4.0 markup demo</span>
div вокруг скрытых элементов
Использование специального CSS класса aspNetHidden:
<div class="aspNetHidden"> … </div>
Генерация внешних таблиц
Свойство для управления созданием внешних таблиц для элемента:
<asp:Login ID="Login1" runat="server" RenderOuterTable="false">
Вывод CheckBoxList и RadioButtonList
Свойство для управления созданием внешних таблиц для элемента:
<asp:CheckBoxList ID="CheckBoxList1" runat="server"
RepeatLayout="Flow | Table | OrderedList | UnorderedList">
…
</asp:CheckBoxList>
<asp:RadioButtonList ID="RadioButtonList1" runat="server"
RepeatLayout="Flow | Table | OrderedList | UnorderedList">
…
</asp:CheckBoxList>
OrderedList
UnorderedList
<ol id="CheckBoxList1">
<li>Demo item 1</li>
<li>Demo item 2</li>
</ol>
<ul id="RadioButtonList1">
<li>Demo item 1</li>
<li>Demo item 2</li>
</ul>
• Flow - <span>
• Table - <table>
Новые в ASP.NET 4.0:
• OrderedList - <ol>
• UnorderedList - <ul>
Меню
Вместо <table> в ASP.NET 4.0 используется <ul>:
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
IncludeStyleBlock="false" Orientation="Horizontal">
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/>
<asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
</Items>
</asp:Menu>
<div class="menu" id="NavigationMenu">
<ul class="level1">
<li><a class="level1" href="Default.aspx">Home</a></li>
<li><a class="level1" href="About.aspx">About</a></li>
</ul>
</div>
Экранирование ввода
Обычная форма записи:
<%= HttpUtility.HtmlEncode(message) %>
Новая форма записи (начиная с ASP.NET 4.0):
<%: message %>
Download