寻求SurveyJS完整对象模型及C#后端适配相关文档
构建调查问卷的C#对象模型及序列化实现
核心对象定义
从基础元素出发,覆盖常见问卷题型的对象结构:
1. 问卷整体实体
public class Survey { // 问卷唯一标识 public Guid Id { get; set; } = Guid.NewGuid(); // 问卷标题 public string Title { get; set; } = string.Empty; // 问卷描述 public string Description { get; set; } = string.Empty; // 创建时间 public DateTime CreatedAt { get; set; } = DateTime.UtcNow; // 问题列表 public List<SurveyQuestion> Questions { get; set; } = new List<SurveyQuestion>(); }
2. 问题基类(兼容多种题型)
public class SurveyQuestion { // 问题唯一标识 public Guid Id { get; set; } = Guid.NewGuid(); // 问题内容 public string Content { get; set; } = string.Empty; // 题型分类 public QuestionType Type { get; set; } // 是否必填 public bool IsRequired { get; set; } // 选项列表(单选/多选/下拉题型专用) public List<QuestionOption>? Options { get; set; } // 评分范围(评分题专用) public int? MinScore { get; set; } public int? MaxScore { get; set; } } // 题型枚举 public enum QuestionType { SingleChoice, // 单选题 MultipleChoice, // 多选题 ShortAnswer, // 填空题 Rating, // 评分题 Dropdown // 下拉选择题 }
3. 问题选项实体
public class QuestionOption { // 选项唯一标识 public Guid Id { get; set; } = Guid.NewGuid(); // 选项显示文本 public string Text { get; set; } = string.Empty; // 选项关联值(用于统计编码,可选) public string? Value { get; set; } }
加载与保存实现(JSON序列化)
使用.NET内置System.Text.Json处理序列化,无需额外依赖:
保存问卷为JSON字符串
public static string SaveSurveyToJson(Survey survey) { var options = new JsonSerializerOptions { WriteIndented = true, // 格式化输出便于阅读 PropertyNameCaseInsensitive = true }; return JsonSerializer.Serialize(survey, options); }
从JSON字符串加载问卷
public static Survey LoadSurveyFromJson(string jsonString) { var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; return JsonSerializer.Deserialize<Survey>(jsonString, options) ?? new Survey(); }
扩展说明
- 若需支持矩阵题、文件上传题等复杂题型,可通过继承
SurveyQuestion实现子类(如MatrixQuestion : SurveyQuestion),序列化时开启多态配置即可。 - 存储到数据库时,可直接将JSON字符串存入
NVARCHAR(MAX)字段,或使用EF Core的原生JSON列支持(SQL Server、PostgreSQL等均兼容)。 - 如需处理用户答卷,可新增
SurveyResponse和QuestionResponse实体,关联对应问卷与问题ID。
内容的提问来源于stack exchange,提问作者quadri
相关产品推荐
相关产品推荐

