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

265 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# HTML语法转换总结
## 概述
根据项目要求,将 `CommunicationConfiguration.cshtml``RealTimeTest.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语法:**
```csharp
@{
ViewData["Title"] = "通信配置管理";
Layout = "~/Views/Shared/_Layout.cshtml";
}
```
**转换后HTML语法:**
```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语法:**
```csharp
@await Html.PartialAsync("~/Views/GeneralInformation/_TranSubstationTree.cshtml")
```
**转换后HTML语法:**
```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语法:**
```csharp
@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语法:**
```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语法:**
```csharp
<a href="@Url.Action("CommunicationConfiguration", "System")" class="btn btn-primary btn-xs">
```
**转换后HTML语法:**
```html
<a href="/System/CommunicationConfiguration" class="btn btn-primary btn-xs">
```
#### 2. 文件结构转换
**原始Razor语法:**
```csharp
@{
ViewData["Title"] = "实时通信测试";
Layout = "~/Views/Shared/_Layout.cshtml";
}
```
**转换后HTML语法:**
```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动态加载变电站树
```javascript
// 初始化变电站树如果substationTree对象存在
if (typeof substationTree !== 'undefined') {
substationTree.initTree(subTreeChanged);
} else {
// 如果substationTree不存在使用简单的树结构
communicationConfig.initSimpleTree();
}
```
### 2. 简单树备用方案
为了确保在没有复杂树组件时也能正常工作,添加了简单树实现:
```javascript
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调用获取
```javascript
// 配置预览
refreshConfigPreview: function () {
SOMS.ajax({
url: AppServiceUrl.CommunicationConfiguration_GetEffectiveConfiguration,
data: JSON.stringify({ transformerSubstationId: communicationConfig.currentTransformerSubstationId }),
success: function (rst) {
// 处理响应数据
}
});
}
```
## CSS样式增强
### 1. 变电站树样式
```css
.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不仅保持了原有功能还提升了用户体验和系统性能。转换后的代码更加标准化便于维护和扩展。