网站首页 网站源码
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]
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 应用程序中,以便于处理动态页面的创建请求。