C# 控制器类中@ViewBag和ViewBag的区别是什么?

C# 控制器类中@ViewBag和ViewBag的区别是什么?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我正在学习ASP.NETMVC4,我已经了解了MVC模式和逻辑。我在网上完成了一些教程,发现有人在Controller类中将这两个符号“ViewBag”和“@ViewBag”混在一起。因此,我对何时使用“@ViewBag”和/或“ViewBag”有点困惑。他们之间有区别吗?或者我可以自由选择编码时使用的符号吗 检查此控制器类代码: public ActionResult Index() { ViewBag.Weights = new List<string>(weightLst

我正在学习ASP.NETMVC4,我已经了解了MVC模式和逻辑。我在网上完成了一些教程,发现有人在Controller类中将这两个符号“ViewBag”和“@ViewBag”混在一起。因此,我对何时使用“@ViewBag”和/或“ViewBag”有点困惑。他们之间有区别吗?或者我可以自由选择编码时使用的符号吗

检查此控制器类代码:

public ActionResult Index()
{
   ViewBag.Weights = new List<string>(weightLst);

   @ViewBag.Statuses = new List<Status>(statuses);

   return View();
}
public ActionResult Index()
{
ViewBag.Weights=新列表(weightLst);
@ViewBag.Status=新列表(状态);
返回视图();
}
看看:

@character开始内联表达式、单语句块、, 和多语句块

所以,
@
字符用于向页面添加代码。如果您不在代码块中,则应使用Razor的此符号将
ViewBag
视为代码(即开始内联表达式)。以下代码将呈现
ViewBag.Title的值:

 <div>@ViewBag.Title</div>
如果您不在代码块中,则如果没有
@
Razor,则将
ViewBag
视为简单文本。以下代码将在页面上呈现
“ViewBag.Title”
字符串:

<div>ViewBag.Title</div>
ViewBag.Title
看看:

@character开始内联表达式、单语句块、, 和多语句块

所以,
@
字符用于向页面添加代码。如果您不在代码块中,则应使用Razor的此符号将
ViewBag
视为代码(即开始内联表达式)。以下代码将呈现
ViewBag.Title的值:

 <div>@ViewBag.Title</div>
如果您不在代码块中,则如果没有
@
Razor,则将
ViewBag
视为简单文本。以下代码将在页面上呈现
“ViewBag.Title”
字符串:

<div>ViewBag.Title</div>
ViewBag.Title

@ViewBag和ViewBag是一样的:“@”来自Razor/代码实现:如果您处于
@{}
块中,则不需要在ViewBag之前添加它


请在ASP网站中查看更多

@ViewBag和ViewBag是一样的:“@”来自Razor/code实现:如果你在
@{}
块中,你不需要在ViewBag之前添加它


请在ASP网站中查看更多

没什么,只是使用方法不同而已。请参阅。

没什么,只是每一个的用法是不同的。请参见。

视图中,可以使用必须以“@”符号开头的内联表达式引用
视图包。例如,要显示
视图包的内容

 <p>@ViewBag.MyValue

视图
中,可以使用必须以“@”符号开头的内联表达式引用
视图包
。例如,要显示
视图包的内容

 <p>@ViewBag.MyValue

@在Razor格式中使用的ViewBag以@开头。它们是相同的东西。看看@的含义和其他Razor标记:不,它不是重复的。你为什么否决这个问题?:-)如果您在控制器中看到这一点,则在字符串前缀为
@
的上下文中,您所拥有的被称为
逐字字符串文本
,它告诉编译器在下一个引号之前不要解释字符串。例如
var string=@“C:\myfolder”您不需要避开反斜杠。除了
@
用作下面描述的答案之外,它是razor视图中内联语句的开头。不幸的是,它不允许我回答您的问题,因为已标记为重复。但事实并非如此——你的问题是关于
控制器
,而不是关于
剃刀视图
。因此,简单的答案是C中的
@ViewBag
ViewBag
是相同的-任何其他变量也是一样的。例如,
inta可被视为
@a
。这里的
@
是一种C#方法,可以转义任何可能是关键字的标识符-例如,
int@while。现在我们有了名为
的变量while
,如果没有
@
,它是不可能的。如果标识符不是关键字,例如,
ViewBag
,那就没关系了。@ViewBag以@开头的Razor格式使用。它们是一样的。看看@的含义和其他Razor标记:不,它不是重复的。你为什么否决这个问题?:-)如果您在控制器中看到这一点,则在字符串前缀为
@
的上下文中,您所拥有的被称为
逐字字符串文本
,它告诉编译器在下一个引号之前不要解释字符串。例如
var string=@“C:\myfolder”您不需要避开反斜杠。除了
@
用作下面描述的答案之外,它是razor视图中内联语句的开头。不幸的是,它不允许我回答您的问题,因为已标记为重复。但事实并非如此——你的问题是关于
控制器
,而不是关于
剃刀视图
。因此,简单的答案是C中的
@ViewBag
ViewBag
是相同的-任何其他变量也是一样的。例如,
inta可被视为
@a
。这里的
@
是一种C#方法,可以转义任何可能是关键字的标识符-例如,
int@while。现在我们有了名为
的变量while
,如果没有
@
,它是不可能的。如果标识符不是关键字,例如
ViewBag
,则这无关紧要。虽然答案很好,但问题并不是这个答案所描述的
Razor View
。问题是关于在C#控制器代码中使用
@ViewBag
。@YK1实际上这个问题的第一次修订版没有提到控制器类(您可以在历史记录中签入,其他答案反映了这一点)。对于问题答案的当前编辑,将使用标识符中的
@
符号。如上所述,如果标识符相等,则认为它们相同