首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重用动态对象(CurrentPage)到部分视图MVC Umbraco

重用动态对象(CurrentPage)到部分视图MVC Umbraco
EN

Stack Overflow用户
提问于 2015-01-16 23:37:42
回答 2查看 2K关注 0票数 3

我对MVC有点(6个月)新,我喜欢尽可能少地使用代码,特别是在可重用代码方面,等等。我使用的是Umbrov7.2,我有(3)选项卡,所有这些选项卡都使用相同的数据类型(自定义网格v7)。

网格具有(4)字段。基本上,我页面上的所有(3)部分都是相同的w/头和调用对象的例外(动态对象是选项卡的属性,正如我前面所说的,这些属性是相同的)。

如何调用部分视图并重用相同的代码?"foreach“是我需要调用这个部分视图的地方,正如您可以看到的那样,它使用相同的代码w/正在迭代的对象的例外。

"CurrentPage.XXXX“是我需要传递的内容,我可以使用相同的迭代器。

代码语言:javascript
复制
@foreach(var XXXX in CurrentPage.XXXX)   <---- partial view

查看:

代码语言:javascript
复制
@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

把它变成:

代码语言:javascript
复制
    <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>

部分?

代码语言:javascript
复制
            @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)不同的对象(u7中的网格)。网格在Umbraco中的工作方式是创建一个新的数据类型,并在该数据类型中定义某些字段(textbox、媒体选择器等)。然后,您可以向文档类型添加属性(在本例中,我使用了我创建的自定义网格)。创建页面后,基于文档类型,属性将被继承。

对于联系人页面,我需要(3)单独的网格。然而,每个网格中有不同的数据。因此,这是(3)不同的JSON对象,我将迭代这些对象。在上面的代码中,(3) JSON对象是:

  1. leadershipTeam
  2. lendersTeam
  3. avisoryBoard (为了简洁而省略)

如何将(CurrentPage.JSONobjectHere)传递到部分视图,只对所有三个节使用一个部分视图()

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-17 15:20:27

曾经做过类似的事情。

像这样称呼你的部分:

代码语言:javascript
复制
@Html.Partial("YourPartialName", (object)CurrentPage.lendersTeam)

然后在部分中使用动态模型:

代码语言:javascript
复制
@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>
            }
票数 4
EN

Stack Overflow用户

发布于 2016-08-03 20:09:06

谢谢莫顿·奥卡。行,可以。我使用NestedContent并调用分部视图来呈现IPublishedContent,但也希望访问CurrentPage。

首先对对象进行简单的强制转换。为了详细说明,这里有一些额外的代码,以防有人需要同样的代码-

代码语言:javascript
复制
    Html.RenderPartial("~/Views/Partials/MyPartial.cshtml", 
                        item, //for me this is an IPublishedContent
                        new ViewDataDictionary { { "CurrentPage", (object)CurrentPage } });

在我的部分里,缩写是为了简洁-

代码语言:javascript
复制
@inherits Umbraco.Web.Mvc.UmbracoViewPage<IPublishedContent>
@{
    dynamic CurrentPage = ViewBag.CurrentPage;
}

<p>@CurrentPage.Name</p>

所以我的模型是IPublishedContent (因为我是在迭代嵌套的内容)

然后在ViewBag中,您将有一个对CurrentPage的引用。我把它命名为CurrentPage,这样我就可以继续使用CurrentPage,就像我们在Umbraco中通常所做的那样。

干杯莫顿H5YR

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27994486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档