razor 是否使用循环分部视图创建对象的多个实例
本文关键字:创建对象 实例 视图 是否 循环 razor | 更新日期: 2023-09-27 18:30:46
这个问题看起来主要是为了能够理解在这种情况下剃刀的行为:
假设我有一个名为HelloWorld.cshtml的视图:
@model List<String>
<div>Hello world</div>
<h2>Greetings from the whole world!</h2>
@foreach(String i in Model)
{
@Html.Partial("GetGreeting", i)
}
在部分视图中 GetGreeting.cshtml 我有以下内容:
@model String
@{ GreetingGetter Greet = new GreetingGetter(); }
<div>@Greet.foo(Model)</div>
在这种情况下,资源分配将如何工作?我相信这会在每次迭代时分配一个新的 GreetingGetter,但我并不特别希望这样,尤其是因为现实生活中的对象可能足够重,以至于通过如此多的无意义的分配来降低性能。
剃须刀如何在引擎盖下处理这个问题?它会在每次在 foreach 循环中调用"@{ ...}"中的代码吗?有没有办法在不改变使此操作更有效的模型的情况下?
谢谢
是的,每次都会创建一个新实例。
你可以把GreetingGetter设为静态的,但这可能会打开其他问题,这取决于你用它做什么。