【发布时间】:2010-08-08 12:23:49
【问题描述】:
谁能给我解释一下下面的语法是什么意思?
ViewData ["greeting"] = (hour
【问题讨论】:
标签: c# asp.net-mvc-2
谁能给我解释一下下面的语法是什么意思?
ViewData ["greeting"] = (hour
【问题讨论】:
标签: c# asp.net-mvc-2
小时
如果hour 的值小于 12,则此 ternary operator 调用(等效于 if then else 结构)将提供字符串 Godd morning,否则下午好。
该结果被放入 ViewData["greeting"] 中,稍后可以在您的视图中使用它来显示消息。
【讨论】:
你是说右边的接线员?这是Conditional Operator,就像:
condition ? if_true : if_false
所以在这里如果hour 小于12,那么ViewData ["greeting"] 将有字符串Godd morning assinged。否则将分配Good afternoon。
您可以阅读有关此运算符的更多信息here。
希望这会有所帮助:)
【讨论】:
这一行将数据从控制器传递到视图模板。视图模板可以使用 ViewData["greeting"] 的内容进行处理。例如:
<p>
<%: ViewData["greeting"] %>, earthling!
</p>
如果变量 hour 的值小于 12,则消息将是“Godd Morning,earthling”,否则将是“Good下午,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";
【讨论】:
与以下内容相同:
if (hour < 12)
ViewData ["greeting"] = "Good morning";
else
ViewData ["greeting"] = "Good afternoon";
只是一个三元运算符来简化这个通用结构。
正如 ŁukaszW.pl 所说,只是:
yourCondition ? isTrue : isFalse;
ViewData 只是控制器传递给视图的字典。
视图应该显示数据,然后,您在控制器上创建“问候”字符串并将其传递给视图以显示该信息。
【讨论】: