使用Html.Partial()通过引用部分视图传递的模型?

时间:2015-10-26 08:28:49

标签: c# asp.net-mvc razor

我有一个布局和三个局部视图,我将整个模型传递给部分视图。我想知道Razor正在传递模型或其副本的参考?

布局

@model MyCustomModel

<div>@Html.Partial("View1", Model)</div>
<div>@Html.Partial("View2", Model)</div>
<div>@Html.Partial("View3", Model)</div>

最佳体验是在布局模型中创建局部视图特定模型并传递特定模型,但布局模型非常复杂,因为A / B测试,我也无法触摸它。

2 个答案:

答案 0 :(得分:3)

里面的代码只是简单的C#,所以如果Modelobject,而不是struct或基本类型(如intbool) ,它是“参考”,而不是复制。

在我看来,没有太多可担心的,因为一个视图永远不会更改模型,所以无论是否复制,都没关系。

答案 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。