【发布时间】:2014-12-18 13:52:06
【问题描述】:
我刚开始使用 Razor (v3) 还可以,但是我不明白当你需要使用 @ 符号时背后的规则。
这是我当前项目中的一个示例。
在这段代码中:
@if (ViewBag.ForcePublic == null && User.Identity.GetUserId() == @Model.Seller.Id)
{
<h2>Listing Status</h2>
switch (Model.Status)
{
如果我在 switch 语句前面放了一个 @,我会收到一个运行时错误,说我不需要嵌套 @ 符号。
但是,在这段代码中:
@if(!Model.BizAddress.StreetAddress.IsEmpty()) {
@Html.DisplayFor(model => model.BizAddress.StreetAddress);
}
如果我没有在 Html.DisplayFor 前面包含 @ 符号,我不仅不会收到语法错误(正如人们所期望的那样,考虑到上面的示例),我的 StreetAddress 是未打印。相反,它默默地失败了!
我想了解为什么会发生这种情况,这样我就可以避免将来可能导致的细微错误。
我怀疑根本原因与模板(我认为)类似于预处理器步骤这一事实有关,并且 C# 代码的范围仅在运行时才知道,因此这两个示例在结构上是两个步骤发生后相同(预处理、编译和运行)。
【问题讨论】:
标签: asp.net-mvc razor