在呈现ASP.NET页面时,哪种机制可以负责自动添加代码?

时间:2011-09-05 15:16:40

标签: asp.net nopcommerce

在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 个答案:

答案 0 :(得分:2)

web.config文件中有一个默认主题设置,应用程序排序检查主题的每个页面,如果该页面没有主题集,则它将使用默认主题。默认主题是DarkOrange。该行是:

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

应该在第59行附近......

你可以删除这一行(只是主题属性,而不是整行),这应该阻止它在没有主题设置的页面上使用它或者...我不确定你正在使用什么主题。 ..或者在主页面中包装您创建的新页面,使其看起来像您网站的其余部分。我认为还有一种方法可以在代码隐藏中为页面设置主题,但不确定你想要做什么。

答案 1 :(得分:1)

链接元素很可能通过代码隐藏添加到页眉控件中。您是否已检查CheckoutCompleted.aspx.cs是否有关于该项目添加到标题的位置的任何参考。如果它不在CheckoutCompleted中,我会认为它可能会在页面层次中的某个点呈现(例如CheckoutCompleted从哪个域继承?)。

答案 2 :(得分:1)

也许在代码隐藏中?

来自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);
}