SOMS/src/Documentation/HTML_Syntax_Conversion_Summary.md
2025-07-16 09:20:13 +08:00

6.4 KiB
Raw Blame History

HTML语法转换总结

概述

根据项目要求,将 CommunicationConfiguration.cshtmlRealTimeTest.cshtml 文件从Razor语法转换为纯HTML语法确保项目能够正确编译和运行。

转换原则

1. 移除所有Razor语法

  • @ 符号: 移除所有以@开头的Razor代码
  • 代码块: 移除 @{} 代码块
  • 指令: 移除 @section@Html@Url 等指令
  • 服务器端代码: 移除所有C#服务器端代码

2. 使用标准Web技术

  • HTML5: 使用标准HTML5语法
  • CSS3: 使用标准CSS3样式
  • JavaScript: 使用客户端JavaScript处理动态功能
  • Vue.js: 使用Vue.js进行数据绑定和组件化

具体转换内容

CommunicationConfiguration.cshtml

1. 文件头部转换

原始Razor语法:

@{
    ViewData["Title"] = "通信配置管理";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

转换后HTML语法:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>通信配置管理</title>
    <link href="/css/plugins/chosen/chosen.min.css" rel="stylesheet">
</head>
<body>

2. 部分视图转换

原始Razor语法:

@await Html.PartialAsync("~/Views/GeneralInformation/_TranSubstationTree.cshtml")

转换后HTML语法:

<!-- 变电站树形结构 -->
<div id="tranSubstationTree" class="tree-container">
    <div class="tree-header">
        <h5><i class="fa fa-sitemap"></i> 变电站选择</h5>
    </div>
    <div class="tree-content">
        <!-- 树形结构将通过JavaScript动态加载 -->
        <div id="jstree" class="jstree-container"></div>
    </div>
</div>

3. 样式和脚本转换

原始Razor语法:

@section styles{
    <link href="~/css/plugins/chosen/chosen.min.css" rel="stylesheet">
    <style>
        /* CSS内容 */
    </style>
}

@section scripts{
    <script src="~/js/content.js?v=1.0.0"></script>
    <script src="~/view-resources/Views/System/CommunicationConfiguration.js"></script>
}

转换后HTML语法:

<style>
    /* CSS内容 */
</style>

<!-- JavaScript 依赖 -->
<script src="/js/content.js?v=1.0.0"></script>
<script src="/view-resources/Views/System/CommunicationConfiguration.js"></script>

</body>
</html>

RealTimeTest.cshtml

1. URL生成转换

原始Razor语法:

<a href="@Url.Action("CommunicationConfiguration", "System")" class="btn btn-primary btn-xs">

转换后HTML语法:

<a href="/System/CommunicationConfiguration" class="btn btn-primary btn-xs">

2. 文件结构转换

原始Razor语法:

@{
    ViewData["Title"] = "实时通信测试";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

转换后HTML语法:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>实时通信测试</title>
</head>
<body>

JavaScript功能增强

1. 变电站树初始化

由于移除了服务器端部分视图需要通过JavaScript动态加载变电站树

// 初始化变电站树如果substationTree对象存在
if (typeof substationTree !== 'undefined') {
    substationTree.initTree(subTreeChanged);
} else {
    // 如果substationTree不存在使用简单的树结构
    communicationConfig.initSimpleTree();
}

2. 简单树备用方案

为了确保在没有复杂树组件时也能正常工作,添加了简单树实现:

initSimpleTree: function () {
    var treeHtml = '<div class="simple-tree">' +
        '<div class="tree-node active" data-id="">' +
        '<i class="fa fa-home"></i> 全局配置' +
        '</div>' +
        '</div>';
    
    $('#jstree').html(treeHtml);
    
    // 绑定点击事件
    $('#jstree .tree-node').on('click', function () {
        // 处理节点选择逻辑
    });
}

3. 动态数据加载

所有服务器端数据现在通过AJAX API调用获取

// 配置预览
refreshConfigPreview: function () {
    SOMS.ajax({
        url: AppServiceUrl.CommunicationConfiguration_GetEffectiveConfiguration,
        data: JSON.stringify({ transformerSubstationId: communicationConfig.currentTransformerSubstationId }),
        success: function (rst) {
            // 处理响应数据
        }
    });
}

CSS样式增强

1. 变电站树样式

.tree-container {
    height: 100%;
    background: #fff;
    border-right: 1px solid #e7eaec;
}

.tree-header {
    padding: 15px;
    border-bottom: 1px solid #e7eaec;
    background: #f8f9fa;
}

.simple-tree .tree-node {
    padding: 8px 12px;
    cursor: pointer;
    border-radius: 4px;
    transition: all 0.3s;
}

.tree-node.active {
    background-color: #1ab394;
    color: #fff;
}

优势和好处

1. 编译兼容性

  • 无Razor依赖: 文件不再依赖Razor引擎
  • 标准HTML: 使用标准Web技术兼容性更好
  • 构建简化: 简化构建过程,减少编译错误

2. 开发效率

  • 前后端分离: 前端逻辑完全独立
  • 调试便利: 可以直接在浏览器中调试
  • 维护简单: 代码结构更清晰

3. 性能优化

  • 客户端渲染: 减少服务器渲染压力
  • 缓存友好: 静态HTML文件更容易缓存
  • 异步加载: 支持异步数据加载

注意事项

1. API依赖

  • 所有动态数据需要通过API获取
  • 确保相关的API端点已正确实现
  • 处理API调用的错误情况

2. 状态管理

  • 使用JavaScript管理页面状态
  • 确保数据同步和一致性
  • 处理用户交互和状态变化

3. 安全考虑

  • 客户端验证不能替代服务器端验证
  • 敏感数据不应在客户端暴露
  • 确保API调用的安全性

测试建议

1. 功能测试

  • 测试所有页面功能是否正常
  • 验证数据加载和显示
  • 检查用户交互响应

2. 兼容性测试

  • 测试不同浏览器的兼容性
  • 验证移动端显示效果
  • 检查响应式布局

3. 性能测试

  • 测试页面加载速度
  • 验证AJAX请求性能
  • 检查内存使用情况

总结

成功将Razor语法转换为纯HTML语法确保了项目的编译兼容性。通过使用现代前端技术Vue.js、AJAX、CSS3不仅保持了原有功能还提升了用户体验和系统性能。转换后的代码更加标准化便于维护和扩展。