[英]When to use @Model and Model In MVC 4 Razor
在我的PartialView中使用VS 2013,C#,我有以下内容;
@model MyProject.Models.MyObject
我可以通过以下方式访问模型属性:
@Model.MyProperty
要么
Model.MyProperty
我注意到,如果不使用@Model,就不会获得显示对象属性名称的IntelliSense。 除此之外,它们的工作原理完全相同。
因此,何时应使用@ Model.MyProperty,何时应仅使用Model.MyProperty?
“ @”符号告诉Razor View Engine后接一个内联表达式。 但是引擎足够聪明,在某些情况下您不需要'@'符号。 例如在简单的代码块中
@{
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>
}
有点奇怪的是您没有获得IntelliSense-您应该获得IntelliSense。
其他示例: 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.";
}
如果您对模型的引用包装在@{}
类的代码块中,则无需在模型引用前面加上@
符号。
考虑到这一点,我将尽可能尝试使用@
前缀。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.