C# 何时在MVC4中使用@Model和Model
使用VS2013,C#,在我的局部视图中,我有以下内容:C# 何时在MVC4中使用@Model和Model,c#,asp.net-mvc-4,razor,C#,Asp.net Mvc 4,Razor,使用VS2013,C#,在我的局部视图中,我有以下内容: @model MyProject.Models.MyObject 我可以通过访问模型属性 @Model.MyProperty 或 我注意到,如果我不使用@Model,我就无法使用IntelliSense来显示对象属性名称。除此之外,它们的工作原理完全相同 因此,何时应该使用@Model.MyProperty,何时应该只使用Model.MyProperty?开头的@将以下文本标记为代码元素,而不是视图标记。因此: <li>@
@model MyProject.Models.MyObject
我可以通过访问模型属性
@Model.MyProperty
或
我注意到,如果我不使用@Model,我就无法使用IntelliSense来显示对象属性名称。除此之外,它们的工作原理完全相同
因此,何时应该使用@Model.MyProperty,何时应该只使用Model.MyProperty?开头的@将以下文本标记为代码元素,而不是视图标记。因此:
<li>@Model.Name</li>
@Model.Name
或
@如果(条件){
型号.名称
}
符号“@”告诉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>
}
for(var i=0;i因此(运行时)编译器将告诉您何时使用@符号。基本上,这两个符号的工作方式不应该相同 如果您在文本块中,则只有
@Model.MyProperty
可以工作。应显示其他文本。(@引入了一个“迷你代码块”)
在代码块中,
Model.MyProperty
可以正常工作,但@应该是语法错误。Razor解析器使用@
符号来表示C代码,并用于表示内联表达式、单语句块和多语句块
它还有一个好处,就是可以强键入对模型的引用
这就是为什么您能够创建如下代码块:
@{
int x = 123;
string y = "because.";
}
如果对模型的引用被包装在类似于@{}
的代码块中,则不需要在模型引用前面加上@
符号
考虑到这一点,如果可能的话,我会尽量使用
@
前缀。第一条语句强烈键入视图,其他语句访问视图数据,如果要将代码与标记分开,则需要@符号
@for (var i = 0; i < Model.List.Count(); i++) {
var image = Model.List[i];
<div class="item @(i == 0 ? "active" : "")">
(... other stuff ...)
</div>
}
@{
int x = 123;
string y = "because.";
}