Controller类中@ViewBag和ViewBag有什么区别?

时间:2013-12-30 13:04:02

标签: c# asp.net-mvc razor

我正在学习ASP.net MVC 4,我已经了解了MVC模式和逻辑。我从互联网上完成了一些教程,我发现人们在Controller类中混合了这两个符号“ViewBag”和“@ViewBag”。所以我在使用'@ViewBag'和/或'ViewBag'时有点困惑。它们之间有区别吗?或者我可以自由选择在编码时使用哪种符号?

检查此Controller类代码:

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

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

   return View();
}

4 个答案:

答案 0 :(得分:4)

查看Introduction to ASP.NET Web Programming Using the Razor Syntax

  

@字符开始内联表达式,单个语句块,   和多语句块

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

ViewBag.Title

如果您已经在代码块中,那么您不需要 <div>@ViewBag.Title</div> 将ViewBag视为代码:

@

如果您不在代码块中,那么在没有@foreach(var item in ViewBag.Items) { <div>@item</div> } 的情况下,Razor会将@视为简单文本。以下代码将在页面上呈现ViewBag字符串:

"ViewBag.Title"

答案 1 :(得分:1)

@ViewBag和ViewBag是一回事:“@”来自Razor /代码实现:如果你在@{}块中,则不需要在ViewBag之前添加它。

在ASP网站上查看更多内容.. http://www.asp.net/web-pages/tutorials/basics/2-introduction-to-asp-net-web-programming-using-the-razor-syntax

答案 2 :(得分:0)

每个人的用法都不同。请参阅this

答案 3 :(得分:-1)

View中,您可以使用必须以“@”符号开头的内联表达式来引用ViewBag。例如,要显示ViewBag ...

的内容
 <p>@ViewBag.MyValue

您还可以在ViewBag的{​​{1}}方法中引用(设置或获取)Action属性值。例如,要在Controller方法中设置值...

Action