ASP.NET:如何向局部视图同时传递模型与额外布尔参数?
ASP.NET局部视图传递额外参数的实现方法
完全可以在传递原有视图模型的同时,给局部视图传入额外参数,下面是两种常用的实现方式:
方式一:通过ViewData传递参数
调用局部视图时,利用view-data属性附加额外参数:
<partial name="DetailPartials/_HeaderPartial" model="Model" view-data='new { ShouldRenderDiv = true }' />
在目标局部视图_HeaderPartial.cshtml中,读取并使用该参数:
@{ // 做空值判断避免报错 bool shouldRenderDiv = ViewData["ShouldRenderDiv"] as bool? ?? false; } @if (shouldRenderDiv) { <div>这里是需要条件渲染的内容</div> } <!-- 原有视图模型的内容正常渲染 --> <p>@Model.SomeProperty</p>
方式二:用匿名对象包装模型与参数
如果不想依赖ViewData,可以把原有模型和额外参数打包成匿名对象,作为新的模型传递:
调用局部视图的代码:
<partial name="DetailPartials/_HeaderPartial" model='new { MainModel = Model, ShouldRenderDiv = true }' />
局部视图需要将模型类型设为dynamic(临时场景下无需额外定义ViewModel类):
@model dynamic @{ bool shouldRenderDiv = Model.ShouldRenderDiv; // 取出原有视图模型 var mainModel = Model.MainModel; } @if (shouldRenderDiv) { <div>这里是需要条件渲染的内容</div> } <!-- 使用原有模型的属性 --> <p>@mainModel.SomeProperty</p>
内容的提问来源于stack exchange,提问作者xeraphim
相关产品推荐
相关产品推荐

