1

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とは無関係-彼らはそれを使用しただけだと思います)を知らないと思います。

それはおそらく何でしょうか?

4

3 に答える 3

2

web.configファイルにはデフォルトのテーマ設定があり、アプリは各ページでテーマをチェックします。そのページにテーマが設定されていない場合は、デフォルトのテーマが使用されます。デフォルトのテーマはDarkOrangeです。行は次のとおりです。

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

59行目あたりにあるはずです...

この行(行全体ではなく、テーマプロパティのみ)を削除すると、テーマが設定されていないページでこの行が使用されなくなるか、...使用しているテーマがわかりません...または作成した新しいページをマスターページでラップして、サイトの他の部分のように見せます。コードビハインドでページのテーマを設定する方法もあると思いますが、何をしたいのかわかりません。

于 2011-09-19T12:15:40.710 に答える
1

link要素は、codebehindによってページヘッダーコントロールに追加される可能性があります。CheckoutCompleted.aspx.csそのアイテムがヘッダーに追加されている場所への参照を確認しましたか。にない場合はCheckoutCompleted、ページ階層のある時点でレンダリングされる可能性があることを収集します(たとえば、何CheckoutCompletedから継承しますか?)。

于 2011-09-05T15:22:08.300 に答える
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);
}
于 2011-09-05T15:28:46.187 に答える