关于重用PartialView以及View层次

来源:互联网 发布:html5 cms系统 编辑:程序博客网 时间:2024/05/17 23:52

自带数据控件@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可以无穷细化下去.

原创粉丝点击