错误CS0103:名称' '在当前上下文中不存在

时间:2014-09-26 20:23:13

标签: c# asp.net-mvc razor codeblocks

当我的视图加载时,我需要检查用户正在访问的域,并根据结果,为页面上显示的徽标引用不同的样式表和图像源。

这是我的代码:

@{
    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:名称&#39; imgsrc&#39;在当前上下文中不存在

我想这是因为&#34; imgsrc&#34;变量是在代码块中定义的,现在已关闭......?

在页面下方引用此变量的正确方法是什么?

2 个答案:

答案 0 :(得分:7)

只需将声明移到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" />
    }
}

答案 1 :(得分:-1)

using System;
using System.Collections.Generic;                    (помогите пожалуйста та же самая
using System.Linq;                                     ошибка PlayerScript.health = 
using System.Text;                                      999999; вот на этот скрипт)                                  
using System.Threading.Tasks;
using UnityEngine;

namespace OneHack
{
    public class One
    {
        public Rect RT_MainMenu = new Rect(0f, 100f, 120f, 100f); //Rect это месторасположение меню по x,y и высота, ширина.
        public int ID_RTMainMenu = 1;
        private bool MainMenu = true;
        private void Menu_MainMenu(int id) //Главное меню
        {
            if (GUILayout.Button("Название вашей кнопки", new GUILayoutOption[0]))
            {
                if (GUILayout.Button("Бессмертие", new GUILayoutOption[0]))
                {
                    PlayerScript.health = 999999;//При нажатии на кнопку у игрока устанавливается здоровье 999999  //Здесь код, который будет происходить при нажатии на эту кнопку
                }
            }
        }
        private void OnGUI()
        {
            if (this.MainMenu)
            {
                this.RT_MainMenu = GUILayout.Window(this.ID_RTMainMenu, this.RT_MainMenu, new GUI.WindowFunction(this.Menu_MainMenu), "MainMenu", new GUILayoutOption[0]);
            }
        }
        private void Update() //Постоянно обновляемый метод, все что здесь будет написанно будет создаваться бесконечно
        {
            if (Input.GetKeyDown(KeyCode.Insert)) //Кнопка на которую будет открываться и закрываться меню, можно поставить другую
            {
                this.MainMenu = !this.MainMenu;
            }
        }
    }
}