Элемент style не может быть вложен в <body>
или дочерние элементы <body>
, вместо этого он должен перейти к элементу <head>
страницы.
Если вы попытаетесь переопределить стилинапример, они вставляются в секцию по умолчанию на странице макета с помощью @RenderBody()
, которая, как я полагаю, находится внутри <body>
на странице макета, в то время как стили по умолчанию все еще остаются в <head>
.
* 1010.* Правильный способ переопределить некоторую часть страницы макета со страницы содержимого будет выглядеть следующим образом, используя разделы Razor:
_layout.cshtml
<head>
@if (IsSectionDefined("Style"))
{
@RenderSection("Style");
}
else
{
<style type="text/css">
/* Default styles */
</style>
}
</head>
<body>
@RenderBody()
...
page.cshtml
@{
Layout = "layout.cshtml";
}
@section Style
{
<style type="text/css">
#main
{
height: 400px;
}
</style>
}
<!-- Body content here -->
...
Теперь, если на странице содержимого определен раздел Style
, его содержимое будет переопределять значения по умолчанию со страницы макета.
Я предлагаю вам прочитать больше о макетах и разделах Razor.Хорошую статью об этом ScottGu можно найти здесь .
Относительно предупреждений о проверке разметки Visual Studio
В Visual Studio возникает проблема, когда разметка, составляющая одну страницу,распределяются между различными файлами, как это.В большинстве случаев Visual Studio (или любая подобная IDE в этом отношении) не может знать, как различные фрагменты страницы будут динамически объединяться в конце.Поэтому обычно вы не можете избежать некоторых из этих предупреждений в проекте.
Лично я игнорировал бы предупреждения, если бы я знал, что я делаю, и полученные страницы проходили проверку разметки (http://validator.w3.org/).
Если вы действительно хотите скрыть предупреждения, вам необходимо отключить соответствующие параметры проверки в Visual Studio. Например, для HTML в Visual Studio 2012 это можно сделать в меню «Инструменты»> «Параметры»> «Текстовый редактор»> «HTML»> «Проверка».