ASP.NET MVC中的语法ViewData

时间:2010-08-08 12:23:49

标签: c# asp.net-mvc-2

任何人都可以向我解释以下语法是什么意思吗?

ViewData [“greeting”] =(小时< 12?“Godd morning”:“下午好”);

4 个答案:

答案 0 :(得分:3)

  

小时< 12? “Godd morning”:“下午好”

如果hour的值小于12,那么ternary operator调用(等于if then else结构)将提供字符串Godd morning。

将结果放入ViewData [“greeting”]中,以后可以在视图中使用它来显示消息。

答案 1 :(得分:1)

你的意思是右边的操作员?它是Conditional Operator,就像:

condition ? if_true : if_false

因此,如果hour小于12,那么ViewData ["greeting"]将会生成字符串Godd morning。否则将分配Good afternoon

您可以阅读有关此运算符here的更多信息。

希望这会有所帮助:)

答案 2 :(得分:1)

此行将数据从控制器传递到视图模板。视图模板可以使用ViewData [“greeting”]的内容进行处理。例如:

<p>
   <%: ViewData["greeting"] %>, earthling!
</p>

如果变量小时的值小于12,那么消息将是“Godd morning,earthling”,否则它将是“下午好,地球!”。

基本上将评估布尔表达式hour < 12。如果是true,则?:之间的表达式将分配给ViewData["greeting"]。如果为false,则:之后的表达式将分配给左侧。

您可以替换

ViewData ["greeting"] = (hour <12 ? "Godd morning" : "Good afternoon");

使用此等效代码:

if( hour < 12 )
   ViewData["greeting"] = "Godd morning";
else
   ViewData["greeting"] = "Good afternoon";

答案 3 :(得分:1)

与以下内容相同:

if (hour < 12)
   ViewData ["greeting"] = "Good morning";
else
   ViewData ["greeting"] = "Good afternoon";

只是简化这种共同结构的三元运算符。

正如ŁukaszW.pl所说,只是:

yourCondition ? isTrue : isFalse;

ViewData只是控制器传递给视图的字典。

该视图应该显示数据,然后,您在控制器上创建“问候”字符串并将其传递给视图以显示该信息。