asp.net-mvc-4 - 重用动态对象 (CurrentPage) 并将其传递给 Partial View MVC Umbraco

标签 asp.net-mvc-4 view umbraco partial-views reusability

我对 MVC 有点陌生(6 个月),我喜欢尽可能少地使用代码,尤其是涉及可重用代码等时。我正在使用 Umbraco v7.2,并且我有 ( 3) 选项卡,它们都使用相同的数据类型(自定义网格 v7)。

网格有 (4) 个字段。基本上我页面上的所有 (3) 个部分都是相同的,但标题和被调用的对象除外(动态对象是其中具有选项卡属性的对象,如我之前所述,它们是相同的) .

如何调用局部 View 并重复使用相同的代码? “foreach”是我需要调用此部分 View 的地方,正如您所见,它使用完全相同的代码,但要迭代的对象除外。

“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 中使用过部分 View 。上面的问题是我有 (3) 个不同的对象 ( grids in u7 )。网格在 Umbraco 中的工作方式是您创建一个新的数据类型,并在该数据类型(文本框、媒体选择器等)中定义某些字段。然后您可以将属性添加到文档类型(在本例中我使用了我创建的自定义网格)。创建页面后,基于文档类型,属性将被继承。

对于联系页面,我需要 (3) 个单独的网格。但是,每个网格中都有不同的数据。因此这是 (3) 个不同的 JSON 对象,我对其进行了迭代。在上面的代码中,(3) 个 JSON 对象是:

  1. 领导团队
  2. 贷方团队
  3. avisoryBoard(为 简洁)

如何将 (CurrentPage.JSONobjectHere) 传递给局部 View ,对所有三个部分仅使用一个局部 View

最佳答案

曾经做过类似的事情。

像这样调用你的部分:

@Html.Partial("YourPartialName", (object)CurrentPage.lendersTeam)

然后在您的部分中使用动态作为模型:

@model dynamic
@foreach (var contact in Model)
            {
                <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>
            }

关于asp.net-mvc-4 - 重用动态对象 (CurrentPage) 并将其传递给 Partial View MVC Umbraco,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27994486/

相关文章:

c# - 静态变量导致 mvc 中的并发问题

mysql - mysql中查看列的操作

codeigniter - 如何将数据从 Controller 传递到 CI 中的 View

c# - 使用 Linq 选择 Id

xml - Umbraco 后端翻译

razor - MVC 4 Bootstrap 模态编辑\详细信息

javascript - 使用 jQuery/Javascript 在 MVC 4 中查找内容页面 URL

asp.net-mvc-4 - 缩小 css 文件如何在 mvc4 中工作?

javascript - 使用 emberjs 选择 View 填充选择框

c# - 将 html 字符串写入 csv 文件