【发布时间】:2015-03-15 16:18:06
【问题描述】:
我对 MVC 还有些陌生(6 个月),我喜欢使用尽可能少的代码,尤其是在涉及可重用代码等方面。我使用的是 Umbraco v7.2,并且我有 ( 3) 选项卡,所有选项卡都使用相同的数据类型(自定义网格 v7)。
网格有 (4) 个字段。基本上,我页面上的所有 (3) 部分都是相同的,但标题和被调用的对象除外(动态对象是选项卡的属性,正如我之前所说,它们是相同的) .
如何调用局部视图并重用相同的代码? “foreach”是我需要调用这个局部视图的地方,你可以看到它使用相同的确切代码,但被迭代的对象除外。
“CurrentPage.XXXX”是我需要传递的,我可以有相同的迭代器
@foreach(var XXXX in CurrentPage.XXXX) <---- partial view
查看:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
Layout = "Master.cshtml";
}
<article class="accordion-wrapper">
<div class="accordion-container accordion-contact">
<a href="javascript:void(0);" class="mont-bold accordion">Leadership Team</a>
@foreach (var leadership in CurrentPage.leadershipTeam)
{
<section class="clearfix">
<div class="col-md-6 col-sm-6">
<ul>
<li>@leadership.contactName</li>
<li>@leadership.contactTitle</li>
</ul>
</div>
<aside class="col-md-6 col-sm-6">
<ul>
<li>@leadership.contactPhone</li>
<li>
<a href="mailto:@leadership.contactEmail">@leadership.contactEmail</a>
</li>
</ul>
</aside>
</section>
}
</div>
</article>
<article class="accordion-wrapper">
<div class="accordion-container accordion-contact">
<a href="javascript:void(0);" class="mont-bold accordion">The Lenders One Team</a>
@foreach (var lenders in CurrentPage.lendersTeam)
{
<section class="clearfix">
<div class="col-md-6 col-sm-6">
<ul>
<li>@lenders.contactName</li>
<li>@lenders.contactTitle</li>
</ul>
</div>
<aside class="col-md-6 col-sm-6">
<ul>
<li>@lenders.contactPhone</li>
<li>
<a href="mailto:@lenders.contactEmail">@lenders.contactEmail</a>
</li>
</ul>
</aside>
</section>
}
</div>
</article>
.... another one here but omitted for brevity
然后把它变成:
<article class="accordion-wrapper">
<div class="accordion-container accordion-contact">
<a href="javascript:void(0);" class="mont-bold accordion">Leadership Team</a>
@Html.Partial( ?????? )
</div>
</article>
<article class="accordion-wrapper">
<div class="accordion-container accordion-contact">
<a href="javascript:void(0);" class="mont-bold accordion">The Lenders One Team</a>
@Html.Partial( ?????? )
</div>
</article>
部分???
@foreach (var contact in ??????)
{
<section class="clearfix">
<div class="col-md-6 col-sm-6">
<ul>
<li>@contact.contactName</li>
<li>@contact.contactTitle</li>
</ul>
</div>
<aside class="col-md-6 col-sm-6">
<ul>
<li>@contact.contactPhone</li>
<li>
<a href="mailto:@contact.contactEmail">@contact.contactEmail</a>
</li>
</ul>
</aside>
</section>
}
欣赏它;)
编辑:
为了澄清,我之前在 Umbraco 中使用过局部视图。上面的问题是我有 (3) 个不同的对象 (grids in u7)。网格在 Umbraco 中的工作方式是创建一个新的数据类型,并在该数据类型中定义某些字段(文本框、媒体选择器等)。然后,您可以将属性添加到文档类型(在本例中,我使用了我创建的自定义网格)。根据文档类型创建页面后,将继承属性。
对于联系页面,我需要 (3) 个单独的网格。但是,每个网格中都有不同的数据。因此,这是 (3) 个不同的 JSON 对象,我对其进行了迭代。在上面的代码中,(3)个JSON对象是:
- 领导团队
- 贷方团队
- avisoryBoard(省略了 简洁)
如何将 (CurrentPage.JSONobjectHere) 传递给局部视图,对所有三个部分仅使用一个局部视图?
【问题讨论】:
标签: asp.net-mvc-4 view umbraco partial-views reusability