You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:57:07