C# 控制器类中@ViewBag和ViewBag的区别是什么?
我正在学习ASP.NETMVC4,我已经了解了MVC模式和逻辑。我在网上完成了一些教程,发现有人在Controller类中将这两个符号“ViewBag”和“@ViewBag”混在一起。因此,我对何时使用“@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
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实际上这个问题的第一次修订版没有提到控制器类(您可以在历史记录中签入,其他答案反映了这一点)。对于问题答案的当前编辑,将使用标识符中的@
符号。如上所述,如果标识符相等,则认为它们相同