Ответ 1
Если вы используете тег runat = "server" для элемента ANY, например DIV, он будет отображать этот код как отдельный метод на скомпилированной странице.
Если вы конвертируете "устаревший" код, рекомендуется удалить все теги runat прямо перед вами, иначе вы окажетесь в ситуации, когда код, подобный приведенному ниже, дает вам ошибку.
<% foreach (var cat in cats) { %>
<div runat="server">
<span class="name"> <%= cat.name %> </span> is a
<span class="breed"> <%= cat.breed %> </span>
</div>
<% } %>
Этот код не даст вам некоторого сумасшествия о том, что 'cat'
выходит за рамки. В конце концов, когда вы посмотрите на полный сгенерированный код, вы увидите, что <div>
был сгенерирован как весь его собственный метод - это, конечно, другая область, в которой не видно кошек.
Вернитесь назад к шаблону по умолчанию для приложения MVC:
Вы увидите, что текущий шаблон дает вам это для head
:
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><%= Html.Encode(ViewData["Title"]) %></title>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>
Это заставило меня подумать: если мы используем синтаксис <% = для записи названия непосредственно в тег title
, то зачем нам нужно его запускать?
Оказывается, поскольку я подозревал, что codebehind для head
ищет существующее значение внутри тега заголовка (которое было бы выведено здесь <%= Html.Encode(ViewData["Title"]) %>
. Если оно найдет одно (что будет в случае всего образ образцов в шаблоне MVC), то он больше ничего не сделает. Если название не существует (если ViewData [ "Title" ] имеет значение NULL или пустое), то он по умолчанию будет установлен в вашем представлении атрибутом title
:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/RRMaster.Master"
Title="View Products" AutoEventWireup="true" CodeBehind="ViewProduct.aspx.cs"
Inherits="RR_MVC.Views.Products.ViewProduct" %>
На моей главной странице я бы удалил тег runat='server'
, так как не думаю, что когда-нибудь захочу заполнить заголовок страницы из свойства представления title
. Но я держусь за выполнение этого ожидающего Фила обещания в блоге на эту тему - в случае, если сервер runat даст мне что-нибудь полезное для моего CSS и JS тоже.