关于重用PartialView以及View层次

本文深入探讨了HTML Action和PartialView在网页设计中的作用,特别是如何利用ChildActionOnly特性来优化页面布局。通过实例分析,解释了如何在不同控制器动作之间共享和复用用户控件,实现高效、灵活的网页结构设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自带数据控件@html.Action/PartialView(model)/@html.Partial

在默认访问页面中有如下代码:利用ChildActionOnly以及PartialView显示类似自带数据用户控件的作用

<div class="clear">

</div>

@Html.Action("HomePageNews","News")

<div class="clear">

</div>

@Html.Action("HomePagePolls","Poll")

 

-   - - - --

 [ChildActionOnly]

        public ActionResultHomePagePolls()

        {

            var polls =_pollService.GetPolls(_workContext.WorkingLanguage.Id, true,0, int.MaxValue);

// IPagedList<Poll>GetPolls(int languageId, bool loadShownOnHomePageOnly,

             int pageIndex, int pageSize, boolshowHidden = false);

//只显示在Homepage,默认showHidden=false//

            var model = polls.Select(x =>PreparePollModel(x)).ToList();

////内部的函数,处理Poll到PollModel的,把IpagedList<Poll>--IPagedList<PollModel>

        protected PollModelPreparePollModel(Poll poll)

//

            returnPartialView(model);- -- -- --- ---HomepagePolls对应HomepagePools.cshtml

        }

parialView的render如下:

@model IList<PollModel>

@using Nop.Web.Framework;

@using Nop.Web.Models.Polls;

@if (Model.Count > 0)

{<div class="todays-poll-box">

    <div class="todays-poll-box-block">

        @foreach(var poll inModel)

        { 

            @Html.Partial("_Poll", poll) //又继续使用了Control Template  _Poll

        }

    </div>

    </div>

}


 

 

_Pool.cshtml的内容,从中可以看到@Html.Partial(“_Poll”,poll)这个方式不需要Controller Action的,适合最简的Control template展示。Html.Action("HomePageNews","News")是要经过Controller的。

@model PollModel

@using Nop.Web.Framework;

@using Nop.Web.Models.Polls;

<div class="poll-item">

    <span class="poll-display-text">@Model.Name</span>

    @if(Model.AlreadyVoted)

{ …

 

@Html.Raw(addToCartWarningsSb.ToString())è直接输出后台变量

 

 

 

@Html.Action("HomePageNews","News")->Actioni(HomepageNews)->View(Action对应的View)->Partialview(subdata)->partialview(withoutAction)-Partialview(without Action)。。。。

从逻辑假设来看,模版View可以无穷细化下去.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值