partial view 以及Document type的关系
来源:互联网 发布:游戏本 知乎 编辑:程序博客网 时间:2024/06/05 18:55
partial view
主要有两类,第一纯ASP.NETMVC的partialView概念,基于Razor引擎的,对应目录Partials,@Html.Partial;第二是macroPartial View对应目录MacroPartials,@Umbraco.RenderMacro.
<h2>Let's render a macro (a "partial view"in MVC)</h2>
@Html.Partial("ChildContent")
在我们的Partial目录下有ChildContent.cshtml文件,内容如下:
@inherits RenderViewPage@using Umbraco.Cms.Web; <div class="roundedbox">// Returns the Json value as a dynamic object.// http://msdn.microsoft.com/en-us/library/system.json.jsonvalue.asdynamic(v=vs.110).aspx <h2>Child contentretrieved from the Model</h2> @foreach (var item in Model.ChildContent()) { var childName =item.AsDynamic().Name ?? "(No name yet)"; <p>Child node name:<b><a href="@item.NiceUrl()">@childName</a></b>,of type <em>@item.ContentType.Name</em>.</p> } <h2>Child contentretrieved from the DynamicModel</h2> @foreach (var item in DynamicModel.Children) { var childName = item.Name ??"(No name yet)"; <p>Child node name:<b><a href="@item.Url">@childName</a></b>, oftype <em>@item.ContentType.Name</em>.</p> } </div>
从上面的代码可以看出DynamicModel和Model(staticModel)的关系,Model可以做到的,dynamicModel一定可以:
Model
Dynamic model
var childName = item.AsDynamic().Name ?? "(No name yet)";
var childName = item.Name ?? "(No name yet)";
="@item.NiceUrl()"
="@item.Url"
再看一个Partialview: @Umbraco.RenderMacro("bookList"),物理文件没找到:
代码开发的?Macros-BookList?
@inherits PartialViewMacroPage
@using Umbraco.Cms.Web@using Umbraco.Cms.Web.Macros@using Umbraco.Framework @foreach (var item in DynamicModel.Children){ var childName = item.Name ??"(No name yet)"; <divclass="product"> <h3><ahref="@item.Url">@childName</a></h3> <ahref="@item.Url"><img src="@Umbraco.GetMediaUrl(item.Id,"image", 100)" alt="@childName" /></a> <p>@(((string)item.AsDynamic().BodyText).StripHtml().Truncate(100))<a href="@item.Url">Read more</a></p> </div>}
PartialViewMacroPage从上面的代码来看,和Razorview看起来内容差不多Umbraco.GetMediaUrl
Razor Partial View
@{
var Homepage = @DynamicModel;
while(Homepage.ContentType.Alias != "homePage")
{
Homepage =Homepage.Parent; //正确定位HomePage,逐层递归到最Home的URL
}
}
<ul>--- 水平方向
<li><ahref="@Homepage.Url">Home</a></li>
@foreach (var item inHomepage.Children)
{
if (@item.CurrentTemplate!= null)
{
var childName =item.Name ?? "(No name yet)";
<li><ahref="@item.Url">@childName </a></li>
}
}
</ul>
如何使用CSS
@inherits RenderViewPage@using System.Web.Mvc@using Umbraco.Cms.Web;@{ Layout ="defaultSite.cshtml"; ViewBag.Title =DynamicModel.Name;}@section Stylesheets{ <linkhref="@Url.Content("~/Content/Styles/Faqs.css")"rel="stylesheet" type="text/css" />}
什么是Documenttype和Contenttype?
以这个FAQ来看,首先FAQ是DocumentType,并且有自己的Template(View)的方式,同时允许FAQcategory作为FAQ的下属(层次关系建立)
同样看FAQcategory,没有Defaulttemplate,也就是纯粹是datamodel的类定义部分,不带有view,同时允许FAQquestion作为下属属性,相当于
FAQ->List<FAQCategory>; FAQCategory->List<FAQQuestion>
@foreach (var f in DynamicModel.Children) { if (f.ContentType.Alias== "FaqCategory") { <liclass="category">@Html.Raw(f.BodyText) <ul> @foreach (varq in f.Children) { if(q.ContentType.Alias == "FaqQuestion") { <liclass="question"> @MvcHtmlString.Create(q.QuestionText) <span class="answer">@MvcHtmlString.Create(q.BodyText)</span></li> } } </ul> </li> }else if (f.ContentType.Alias == "FaqQuestion") //直接是Question? { <liclass="question"> @MvcHtmlString.Create(f.QuestionText) <spanclass="answer">@MvcHtmlString.Create(f.BodyText)</span></li> } }
对应以上的代码,效果如下:
- partial view 以及Document type的关系
- 关于MFC中Document, Frame, View以及Document Template结构关系
- 关于MFC中Document, Frame, View以及Document Template结构关系
- 关于MFC中Document, Frame, View以及Document Template结构关系
- MVC中Partial View的数据绑定
- .net core partial view的一些心得
- MFC应用程序中 App MainFrm Document View 菜单栏 工具栏 相互之间的关系
- C# Partial Type
- 简单的Document/View程序
- 复杂的Document/View程序
- Document/View的初始化过程
- document.body和document.documentElement,document.compatMode的关系
- Document.all 以及 Document.getElementById 的转化
- MVC3 使用动态生成的DropDownList,更新partial view
- MIME Type 与 Content-Type 的关系
- Document/View的交互 -- 文件读写操作
- Document与View之间的相互作用
- 关于MFC的document/view结构
- 重复性服务器客户机编程
- 智能车笔记3 外部中断
- 用boost在共享内存上创建一个复杂的map
- HOJ Octal Fractions——进制转化复习及模版补充
- Oracle中端口和URL查看
- partial view 以及Document type的关系
- 电子学习资料/电子设计/电子竞赛/产品设计/产品开发(吐血推荐)
- 14,多进程编程--创建进程
- (转)Linux学习路线
- Java中的synchronized、Object.wait()、Object.notify()/notifyAll()原理
- 多线程服务器/客户机编程
- 计算以指定字体和字号输出指定文字,所需要的size 辅助函数
- 在EmEditor上编译并运行JAVA
- Dimension 类封装单个对象中组件的宽度和高度(精确到整数)