何时在 MVC 4 剃刀中使用@Model和模型
本文关键字:@Model 模型 MVC 剃刀 何时 | 更新日期: 2023-09-27 18:33:59
使用VS 2013,C#,在我的PartialView中,我有以下内容;
@model MyProject.Models.MyObject
我可以通过以下方式访问模型属性;
@Model.MyProperty
或
Model.MyProperty
我注意到,如果我不使用@Model,我将无法获得智能感知来显示对象属性名称。 除此之外,它们的工作方式完全相同。
因此,我什么时候应该使用@Model.MyProperty,什么时候应该只使用Model.MyProperty?
"@"符号告诉 Razor 视图引擎后面跟一个内联表达式。但是引擎足够智能,在某些情况下你不需要"@"符号。例如,在简单的代码块中,例如
@{
int x = 123;
string y = Model.AStringProperty;
}
或者,如果您连续使用多个 Razor/C# 语句:
@for (var i = 0; i < Model.List.Count(); i++) {
var image = Model.List[i];
<div class="item @(i == 0 ? "active" : "")">
(... other stuff ...)
</div>
}
有点奇怪的是,你没有得到智能感知 - 你应该得到一个。
更多示例:http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/
因此,(运行时)编译器会告诉您何时使用"@"符号。
开头
的 @ 将以下文本标记为代码元素,而不是视图标记。所以:
<li>@Model.Name</li>
或
<li>
@if(condition){
Model.Name
}
</li>
基本上,两者永远不应该相同。
如果您在文本块中,则只有@Model.MyProperty
应该有效。应显示其他文本。(@引入了一个"迷你代码块")在代码块中,Model.MyProperty
工作正常,但 @ 应该是语法错误。
Razor 分析器使用@
符号来指示 C# 代码,并用于指示内联表达式、单语句块和多语句块。
它还具有强键入对模型的引用的好处。
这就是您能够创建如下代码块的原因:
@{
int x = 123;
string y = "because.";
}
如果对模型的引用包含在代码块中,例如@{}
则无需在模型引用前面加上@
符号。
考虑到这一点,我总是会尽可能尝试使用 @
前缀。