繁体   English   中英

何时在MVC 4 Razor中使用@Model和Model

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM