我有一个布局和三个局部视图,我将整个模型传递给部分视图。我想知道Razor正在传递模型或其副本的参考?
布局
@model MyCustomModel
<div>@Html.Partial("View1", Model)</div>
<div>@Html.Partial("View2", Model)</div>
<div>@Html.Partial("View3", Model)</div>
最佳体验是在布局模型中创建局部视图特定模型并传递特定模型,但布局模型非常复杂,因为A / B测试,我也无法触摸它。
答案 0 :(得分:3)
里面的代码只是简单的C#,所以如果Model
是object
,而不是struct
或基本类型(如int
,bool
) ,它是“参考”,而不是复制。
在我看来,没有太多可担心的,因为一个视图永远不会更改模型,所以无论是否复制,都没关系。
答案 1 :(得分:0)
@Html.Partial
最后只是一个C#方法,如果您的模型在使用class
和C#传递object
varable作为默认参考时真的很复杂。
可能的解决方案之一,但不是很干净,是为主视图上的每个PartialView和填充模型创建另一个模型。
@{
var PartialViewModel1 = Model.PropertiyThatYouNeed;
//Init other properties if you need
}
@Html.Partial("View1", PartialViewModel1);
因此,您无需触摸主ViewModel。