web-dev-qa-db-ja.com

エラーCS0103:名前 ''は現在のコンテキストに存在しません

ビューが読み込まれたら、ユーザーがアクセスしているドメインを確認し、その結果に基づいて、ページに表示されるロゴの異なるスタイルシートと画像ソースを参照する必要があります。

これは私のコードです:

@{
    string currentstore=HttpContext.Current.Request.ServerVariables["HTTP_Host"];

    if (currentstore == "www.mydomain.com")
    {
        <link href="/path/to/my/stylesheets/styles1-print.css" rel="stylesheet" type="text/css" />
        string imgsrc="/content/images/uploaded/store1_logo.jpg";
    }
    else
    {
        <link href="/path/to/my/stylesheets/styles2-print.css" rel="stylesheet" type="text/css" />
        string imgsrc="/content/images/uploaded/store2_logo.gif";
    }
}

次に、少し下にimgsrc変数を次のように呼び出します。

<a href="@Url.RouteUrl("HomePage")" class="logo"><img  alt="" src="@imgsrc"></a>

次のエラーが表示されます:

エラーCS0103:名前 'imgsrc'は現在のコンテキストに存在しません

これは、「imgsrc」変数が現在閉じられているコードブロックで定義されているためだと思います...?

この変数をページのさらに下で参照する適切な方法は何ですか?

5
embryo

宣言をifブロックの外側に移動するだけです。

@{
string currentstore=HttpContext.Current.Request.ServerVariables["HTTP_Host"];
string imgsrc="";
if (currentstore == "www.mydomain.com")
    {
    <link href="/path/to/my/stylesheets/styles1-print.css" rel="stylesheet" type="text/css" />
    imgsrc="/content/images/uploaded/store1_logo.jpg";
    }
else
    {
    <link href="/path/to/my/stylesheets/styles2-print.css" rel="stylesheet" type="text/css" />
    imgsrc="/content/images/uploaded/store2_logo.gif";
    }
}

<a href="@Url.RouteUrl("HomePage")" class="logo"><img  alt="" src="@imgsrc"></a>

あなたはそれを少しきれいにすることができます。

@{
string currentstore=HttpContext.Current.Request.ServerVariables["HTTP_Host"];
string imgsrc="/content/images/uploaded/store2_logo.gif";
if (currentstore == "www.mydomain.com")
    {
    <link href="/path/to/my/stylesheets/styles1-print.css" rel="stylesheet" type="text/css" />
    imgsrc="/content/images/uploaded/store1_logo.jpg";
    }
else
    {
    <link href="/path/to/my/stylesheets/styles2-print.css" rel="stylesheet" type="text/css" />
    }
}
7
mason