网站首页 网站源码

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text.Json.Serialization;
using System.Xml.Serialization;
using Microsoft.AspNetCore.Mvc.ModelBinding;
#nullable enable
namespace Dpz.Core.Public.ViewModel.DynamicPages;
/// <summary>
/// 自定义页
/// </summary>
public class VmCreateDynamicPage
{
/// <summary>
/// HTML 内容
/// </summary>
[Required]
public HtmlContent? HtmlContent { get; set; }
/// <summary>
/// 样式 内容
/// </summary>
[XmlIgnore]
public SortedDictionary<int, StyleContent> StyleContents { get; set; } = [];
[XmlArray(ElementName = "StyleContents")]
[XmlArrayItem(ElementName = "StyleContent")]
[JsonIgnore]
public KeyValueElement[] SerializableStyleContents =>
StyleContents?.Select(x => new KeyValueElement(x.Key, x.Value)).ToArray() ?? [];
/// <summary>
/// 脚本 内容
/// </summary>
[XmlIgnore]
public SortedDictionary<int, ScriptContent> ScriptContents { get; set; } = [];
[XmlArray(ElementName = "ScriptContents")]
[XmlArrayItem(ElementName = "ScriptContent")]
[JsonIgnore]
public KeyValueElement[] SerializableScriptContents =>
ScriptContents?.Select(x => new KeyValueElement(x.Key, x.Value)).ToArray() ?? [];
/// <summary>
/// 创建人
/// </summary>
[BindNever, JsonIgnore, XmlIgnore]
public VmUserInfo? Creator { get; set; }
}
这段代码定义了一个名为 VmCreateDynamicPage 的 C# 类,主要用于表示一个动态页面的视图模型。这个类包含了多个属性,用于存储与动态页面相关的信息。以下是对代码中各个部分的详细解释:
namespace Dpz.Core.Public.ViewModel.DynamicPages:定义了一个命名空间,表示该类属于 Dpz.Core.Public.ViewModel.DynamicPages 这个逻辑分组。public class VmCreateDynamicPage:定义了一个公共类 VmCreateDynamicPage,用于创建动态页面的视图模型。HtmlContent
HtmlContent?[Required]Required 特性,表示该属性是必需的,不能为 null。StyleContents
SortedDictionary<int, StyleContent>StyleContent 对象。初始化为空字典。SerializableStyleContents
KeyValueElement[][XmlArray], [XmlArrayItem], [JsonIgnore]StyleContents 转换为 KeyValueElement 数组,以便于序列化。使用 JsonIgnore 特性,表示在 JSON 序列化时忽略该属性。ScriptContents
SortedDictionary<int, ScriptContent>ScriptContent 对象。初始化为空字典。SerializableScriptContents
KeyValueElement[][XmlArray], [XmlArrayItem], [JsonIgnore]ScriptContents 转换为 KeyValueElement 数组,以便于序列化。使用 JsonIgnore 特性,表示在 JSON 序列化时忽略该属性。Creator
VmUserInfo?[BindNever]BindNever 特性,表示在模型绑定时忽略该属性。VmCreateDynamicPage 类的主要功能是封装动态页面的相关数据,包括 HTML 内容、样式内容、脚本内容以及创建者的信息。它使用了数据注解特性来控制属性的验证和序列化行为。该类可以用于 MVC 或 Web API 应用程序中,以便于处理动态页面的创建请求。
