WebFuture 模板技术中心WebFuture 模板技术中心
首页
  • WebFuture

    • 概述
    • 网站部署
  • 帮助

    • 本站指南
  • 概述
  • 模板组成和目录
  • 模板编辑与管理
  • 模板相关功能清单
  • 模板命名规范
  • 标准模板库
  • 模板制作流程
  • 模板方案打包

    • 模板方案打包要求
    • 模板打包工具使用说明
    • 模板方案导入与站点应用
  • 附件

    • 规范命名对照表
  • 概述
  • 视图与组件
  • 组件使用示例
  • 内容模块常用组件

    • 文章模型
    • 图片模型
    • 视频模型
    • 内容模型
    • 公开信息模型
    • 档案模型
  • 功能模块常用组件

    • 站点类
    • 节点类
    • 广告类
    • 便民咨询类
    • 信访类
    • 问卷投票类
    • 值班管理
    • 扩展字段
  • 进阶应用

    • 应用:字段在列表页筛选
    • 应用:引导页后渐隐显示首页
  • 通用对象
  • 通用URL生成对象
  • 通用字符处理对象
  • 请求上下文对象
  • 数据传递对象
  • 一般URL生成对象
数据结构
  • 概述
  • 从WebFuture系统升级
  • 从SiteAzure系统迁移
常见问题
×
首页
  • WebFuture

    • 概述
    • 网站部署
  • 帮助

    • 本站指南
  • 概述
  • 模板组成和目录
  • 模板编辑与管理
  • 模板相关功能清单
  • 模板命名规范
  • 标准模板库
  • 模板制作流程
  • 模板方案打包

    • 模板方案打包要求
    • 模板打包工具使用说明
    • 模板方案导入与站点应用
  • 附件

    • 规范命名对照表
  • 概述
  • 视图与组件
  • 组件使用示例
  • 内容模块常用组件

    • 文章模型
    • 图片模型
    • 视频模型
    • 内容模型
    • 公开信息模型
    • 档案模型
  • 功能模块常用组件

    • 站点类
    • 节点类
    • 广告类
    • 便民咨询类
    • 信访类
    • 问卷投票类
    • 值班管理
    • 扩展字段
  • 进阶应用

    • 应用:字段在列表页筛选
    • 应用:引导页后渐隐显示首页
  • 通用对象
  • 通用URL生成对象
  • 通用字符处理对象
  • 请求上下文对象
  • 数据传递对象
  • 一般URL生成对象
数据结构
  • 概述
  • 从WebFuture系统升级
  • 从SiteAzure系统迁移
常见问题
  • 系统组件

    • 概述
    • 视图与组件
    • 组件使用示例
  • 内容模块常用组件

    • 文章模型
    • 图片模型
    • 视频模型
    • 内容模型
    • 公开信息模型
    • 档案模型
  • 功能模块常用组件

    • 站点类
    • 节点类
    • 广告类
    • 便民咨询类
    • 信访类
    • 问卷投票类
    • 扩展字段
  • 进阶应用

    • 字段在列表页筛选
    • 引导页后渐隐显示首页

扩展字段

可分为站点扩展字段、节点扩展字段、内容模型、信访、便民咨询扩展字段。

1. 站点扩展字段

获取站点扩展字段信息

// 引入站点扩展字段服务
@inject SiteExtendFieldService SiteExtendFieldService

// 获取站点扩展字段信息
@{
    var currentSite = this.Context.GetCurrentSite();
    // 获取站点的所有扩展字段数据。
    var extendFields = SiteExtendFieldService.GetAll().ToList();
    currentSite.ExtendContentObject.InitExtendContent(extendFields, currentSite.ExtendContent);
}

获取指定的扩展字段值

// 方法一
@currentSite.ExtendObject.字段名称

// 方法二
@currentSite.ExtendObject[字段名称]

循环获取站点所有扩展字段

// 引入站点扩展字段服务
@inject SiteExtendFieldService SiteExtendFieldService

// 循环获取所有扩展字段内容
<ul class="extend-list">
    @foreach(var item in extendFields)
    {
        if (currentSite.ExtendContentObject.ContainsKey(item.ExtendFieldName)){
            <li>
                <span>字段显示名称:@item.ExtendFieldDisplayName</span>
                <span>字段名称:@item.ExtendFieldName</span>
                <span>字段值:@currentSite.ExtendContentObject[item.ExtendFieldName]</span>
            </li>
        }
    }
</ul>

2. 节点扩展字段

获取节点扩展字段信息

// 引入节点扩展字段服务
@inject NodeExtendFieldService NodeExtendFieldService

@{
    Node node = null;
    if (ViewContext.RouteData.Values["area"].ToString().Contains("ContentManage"))
    {
        node = Model is Node ? Model : Model.Node;
    }
    // 获取节点的所有扩展字段数据。
    var extendField = NodeExtendFieldService.GetAll();
    node.ExtendContentObject.InitExtendContent(extendField, node.ExtendContent);
}

获取指定的扩展字段值

// 方法一
@node.ExtendObject.字段名称

// 方法二
@node.ExtendObject[字段名称]

循环获取节点所有扩展字段

<ul class="extend-list">
    @foreach(var item in extendField)
    {
        <li>
            <span>字段显示名称:@item.ExtendFieldDisplayName</span>
            <span>字段名称:@item.ExtendFieldName</span>
            <span>字段值:@currentSite.ExtendContentObject[item.ExtendFieldName]</span>
        </li>
    }
</ul>

全局调用案例

当设有Banner的图片扩展字段,在判断是否首页及非空后调用一级节点的Banner图片。

// 引入节点、节点扩展字段服务
@inject NodeService NodeService
@inject NodeExtendFieldService NodeExtendFieldService

@{
    var IsHome = ViewBag.IsHome ?? false;
    Node node = ViewBag.Node;
    if (ViewContext.RouteData.Values["area"].ToString().Contains("ContentManage"))
    {
        node = Model is Node ? Model : Model.Node;
    }

    if (IsHome != true)
    {
        if (node != null)
        {
            var nodeService = NodeService;
            // 筛选这个节点的扩展字段数据。
            var extendField = NodeExtendFieldService.GetAll();
            node.ExtendContentObject.InitExtendContent(extendField, node.ExtendContent);
            if (!string.IsNullOrEmpty(node.ExtendObject.BannerImage))
            {
                <div class="pageBanner" style="background-image: url('@Power.ToUrl(node.ExtendObject.BannerImage)');"></div>
            }
            else
            {
                var topNode = nodeService.GetAncestorNode(node, 0);
                topNode.ExtendContentObject.InitExtendContent(extendField, topNode.ExtendContent);
                if (!string.IsNullOrEmpty(topNode.ExtendObject.BannerImage))
                {
                    <div class="pageBanner" style="background-image: url('@Power.ToUrl(topNode.ExtendObject.BannerImage)');"></div>
                }
                else
                {
                    <div class="pageBanner"></div>
                }
            }
        }
        else
        {
            <div class="pageBanner"></div>
        }
    }
}

3. 内容模型扩展字段

若在列表组件中调用内容模型的扩展字段,需先开启扩展字段,增加ExtendField = true参数。

@Power.ArticleList("文章标题列表", new { Count = 5, Node = "xwzx", ExtendField = true })

获取指定的扩展字段值

// 方法一
@Model.ExtendObject.字段名称

// 方法二
@Model.ExtendObject[字段名称]

循环获取模型所有扩展字段

// 引入模型扩展字段服务
@inject ContentExtendFieldService ContentExtendFieldService

@{
    var contentExtendFields = ContentExtendFieldService.GetMany(x => x.MoldId == Model.Node.MoldId.Value).ToList();
    <ul class="extend-list">
        @foreach (var item in contentExtendFields)
        {
            <li>
                <span>字段显示名称:@item.ExtendFieldDisplayName</span>
                <span>字段名称:@item.ExtendFieldName</span>
                <span>字段值:@Model.ExtendObject[item.ExtendFieldName]</span>
            </li>
        }
    </ul>
}

4. 信访扩展字段

循环获取信访所有扩展字段

写信页

// 引入信访扩展字段服务
@inject PetitionLetterExtendFieldService PetitionLetterExtendFieldService

@{
    var extendFields = PetitionLetterExtendFieldService.GetAll().OrderBy(x => x.Order);
    <ul class="extend-list">
        @foreach (var item in extendFields)
        {
            <li>
                <span>字段显示名称:@item.ExtendFieldDisplayName:</span>
                <span>字段名称:@item.ExtendFieldName</span>
                <span>字段是否必填:@item.IsRequired</span>
                <span>字段表单:@Html.EditorForExtendField(item.ExtendFieldName)</span>
                <span>字段验证提示:@Html.ValidationMessageForExtendField(item.ExtendFieldName)</span>
            </li>
        }
    </ul>
}

5. 便民咨询扩展字段

获取指定的扩展字段值

内容页

@Html.DisplayForExtendFieldValue("字段名称")

循环获取便民咨询所有扩展字段

写信页

// 引入便民咨询扩展字段服务
@inject LetterCategoryExtendFieldService LetterCategoryExtendFieldService

@{
    var extendFields = LetterCategoryExtendFieldService.GetMany(o => o.MoldId == Model.LetterCategoryMoldId).ToList();
    <ul class="extend-list">
        @foreach (var item in extendFields)
        {
            <li>
                <span>字段显示名称:@item.ExtendFieldDisplayName:</span>
                <span>字段名称:@item.ExtendFieldName</span>
                <span>字段是否必填:@item.IsRequired</span>
                <span>字段表单:@Html.EditorForExtendField(item.ExtendFieldName)</span>
                <span>字段验证提示:@Html.ValidationMessageForExtendField(item.ExtendFieldName)</span>
            </li>
        }
    </ul>
}

内容页

@{
    var moldName = this.ViewBag.MoldName;
    var extendFields = this.ViewBag.ExtendFields;
    @if (extendFields != null)
    {
        <h1>模型名称:@moldName</h1>
        <ul class="extend-list">
            @foreach (var item in extendFields)
            {
                <li>
                    <span>字段显示名称:@item.ExtendFieldDisplayName:</span>
                    <span>字段名称:@item.ExtendFieldName</span>
                    <span>字段值:@Html.DisplayForExtendFieldValue((string)item.ExtendFieldName)</span>
                </li>
            }
        </ul>
    }
}

6.根据字段数据类型展示字段值

以内容模型为例

布尔型

// 三目运算符
@(Model.ExtendObject.fxk ? "正确" : "错误")

// 条件判断
@if (Model.ExtendObject.fxk)
{
    <text>正确</text>
}
else
{
    <text>错误</text>
}

日期时间

// 使用前需判断非空
@if (DateTime.Compare(Convert.ToDateTime(Model.ExtendObject.rqsj), new DateTime()) > 0)
{
    <span>@Model.ExtendObject.rqsj.ToString("yyyy-MM-dd HH:mm:ss")</span>
}

整数型

@Model.ExtendObject.zs

// 运算
@(Model.ExtendObject.zsxllb + 2)

整数集合

@foreach (var item in Model.ExtendObject.sxlbk)
{
    <text>@item</text>
}

浮点型

@Model.ExtendObject.fdx

// 运算
@(Model.ExtendObject.fdx * 2)

货币型

@Model.ExtendObject.je

// 运算
@(Model.ExtendObject.je / 2)

字符型

@Model.ExtendObject.wbxz

字符型(多行文本)

// pre带换行效果
<pre>@Model.ExtendObject.dhwb</pre>

// 移除html
@{
    string dhwb = Model.ExtendObject.dhwb.ToString();
    <text>@dhwb.RemoveHtml()</text>
}

字符型(编辑器)

// 转为html
@Power.ToHtml(Model.ExtendObject.bjq)

// 移除html
@{
    string bjq= Model.ExtendObject.bjq.ToString();
    <text>@bjq.RemoveHtml()</text>
}

字符型(单图片上传)

// 引入字符串扩展服务
@inject StringExtensionsHelper StringExtensionsHelper

// 图片文件
<img src="@StringExtensionsHelper.ToUrl(Model.ExtendObject.dtpwjsc)" />

// 生成缩略图
@if (!string.IsNullOrEmpty(Model.ExtendObject.dtpwjsc))
{
    string dtpwjsc = StringExtensionsHelper.ToUrl(Model.ExtendObject.dtpwjsc);
    <img src="@Power.Thumbnail(dtpwjsc, 320, 240)" />
}

字符型(单文件上传)

// 引入字符串扩展服务
@inject StringExtensionsHelper StringExtensionsHelper

// 附件下载
@if (!string.IsNullOrEmpty(Model.ExtendObject.dwjsc))
{
    string dwjsc = Model.ExtendObject.dwjsc.ToString();
    string[] dwjscs = dwjsc.Split("/");
    <a href="@StringExtensionsHelper.ToUrl(dwjsc)" download="@dwjscs[dwjscs.Length - 1]">下载</a>
}

字符型(多图片上传)

// 引入字符串扩展服务
@inject StringExtensionsHelper StringExtensionsHelper

@if (!string.IsNullOrEmpty(Model.ExtendObject.dtpsc))
{
    string dtpsc = Model.ExtendObject.dtpsc.ToString();
    @if (dtpsc.StartsWith("[") && dtpsc.EndsWith("]"))
    {
        foreach (var item in JsonConvert.DeserializeObject<List<dynamic>>(dtpsc))
        {
            string url = item.PhotoUrl.ToString();
            <img src="@Power.Thumbnail(StringExtensionsHelper.ToUrl(url), 320, 240)" alt="@item.PhotoIntro" title="@item.PhotoTitle" />
        }
    }
}

字符型(多文件上传)

// 引入字符串扩展服务
@inject StringExtensionsHelper StringExtensionsHelper

@if (!string.IsNullOrEmpty(Model.ExtendObject.dwjsc))
{
    string dwjsc = Model.ExtendObject.dwjsc.ToString();
    @if (dwjsc.StartsWith("[") && dwjsc.EndsWith("]"))
    {
        foreach (var item in JsonConvert.DeserializeObject<List<dynamic>>(dwjsc))
        {
            string url = item.PhotoUrl.ToString();
            string[] urls = url.Split("/");
            <a href="@StringExtensionsHelper.ToUrl(url)" download="@urls[urls.Length - 1]" title="@item.PhotoIntro">@item.PhotoTitle</a>
        }
    }
}

字符型(行政区划)

// 引入行政区划服务
@inject IRegionProvider IRegionProvider

@if (!string.IsNullOrEmpty(Model.ExtendObject.hzqh))
{
    var hzqh = IRegionProvider.GetRegionById(Convert.ToInt32(Model.ExtendObject.hzqh));
    <span>国家:@hzqh?.Country</span>
    <span>省份:@hzqh?.Province</span>
    <span>城市:@hzqh?.City</span>
    <span>地区(县):@hzqh?.Area</span>
    <span>邮政编码:@hzqh?.PostCode</span>
    <span>区号:@hzqh?.AreaNumber</span>
    <span>行政区划代码:@hzqh?.AreaCode</span>
}

字符型(地理位置)

@if (!string.IsNullOrEmpty(Model.ExtendObject.dlwz))
{
    string dlwz = Model.ExtendObject.dlwz.Trim('P', 'O', 'I', 'N', 'T', '(', ')');
    string[] dlwzs = dlwz.Split(' ');
    <span>经度: @dlwzs[0]</span>
    <span>纬度: @dlwzs[1]</span>
}

字符型(颜色)

<span style="color:@(Model.ExtendObject.ys);">颜色</span>

字符型(级联下拉列表)

@Model.ExtendObject.jlxllb
帮助我们改善此页面!
最近更新: 2025/2/25 13:40
贡献者: Zen.Wu, zenkinwin, Zen.Wu.PC, 邹宏达
Prev
问卷投票类