Какой механизм может отвечать за автоматическое добавление кода при отображении страниц ASP.NET? - PullRequest
1 голос
/ 05 сентября 2011

В решении nopCommerce нам нужно было заменить существующую страницу ASP.NET на очень простую новую, которая просто показывает сообщение.Наша новая страница ASP.NET вообще не имеет ссылки ни на что, связанное с nopCommerce, не имеет никакого кода позади, ничего, что дает мне подсказку, почему происходит следующее:

Автоматически, строка кода вставляется в визуализированный HTML(в данном случае ссылка на файл css темы по умолчанию).

Это код нового файла ASP.NET:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CheckoutCompleted.aspx.cs" Inherits="CheckoutCompleted" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Shop</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>Your order has now been completed.</div>
    </form>
</body>
</html>

И это отображается в браузере:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Shop</title>
    <link href="App_Themes/DarkOrange/styles.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <form name="form1" method="post" action="CheckoutCompleted.aspx" id="form1">
    <div><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTQwMDkzNTAzN2Rk4txlLxJclpkuKfo1dNvs77An124dQqbJKyMfrIgvgaY=" /></div>
    <div>Your order has now been completed.</div>
</form>
</body>
</html>

Код CheckoutCompleted.cs (наш собственный, новый) выглядит следующим образом:

public partial class CheckoutCompleted : System.Web.UI.Page
{
}

Выполнение останавливается на точке останова, установленной в Page_Load, поэтому правильный .csесть ссылка.

Так что какой-то механизм добавляет новую строку. Я проверил web.config на наличие подсказок, но Полагаю, я ничего не знаю о какой-то классной функции ASP.NET (независимо от nopCommerce - я думаю, что они просто использовали его).

Что это может быть?

Ответы [ 3 ]

2 голосов
/ 19 сентября 2011

В файле web.config есть настройка темы по умолчанию, и приложение проверяет каждую страницу на предмет наличия темы, и если на этой странице нет темы, оно будет использовать тему по умолчанию. Тема по умолчанию - DarkOrange. Строка:

<pages theme="DarkOrange" validateRequest="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">

Должно быть около линии 59 ...

Вы можете удалить эту строку (только свойство темы, а не всю строку), и это должно препятствовать ее использованию на страницах без установленной темы или ... Я не уверен, какую тему вы используете. .. или оберните ту новую страницу, которую вы создали на главной странице, чтобы она выглядела как остальная часть вашего сайта. Я думаю, что есть также способ установить тему для страницы в коде, но не уверен, что вы хотите сделать.

1 голос
/ 05 сентября 2011

Возможно в коде позади?

С aspdotnetfaq :

protected void Page_Init(object sender, EventArgs e)
{
    HtmlLink css = new HtmlLink();
    css.Href = "css/fancyforms.css";
    css.Attributes["rel"] = "stylesheet";
    css.Attributes["type"] = "text/css";
    css.Attributes["media"] = "all";
    Page.Header.Controls.Add(css);
}
1 голос
/ 05 сентября 2011

Элемент ссылки, вероятно, добавлен в элемент управления заголовка страницы codebehind. Вы проверили CheckoutCompleted.aspx.cs для любой ссылки, где этот элемент добавляется в заголовок. Если его нет в CheckoutCompleted, я бы понял, что он может быть визуализирован в определенный момент иерархии страниц (например, что наследует CheckoutCompleted?).

...