@page
|
@model CreateModel
|
@{
|
ViewData["Title"] = "创建实例";
|
}
|
|
<div class="row justify-content-center">
|
<div class="col-lg-8">
|
<div class="card shadow">
|
<div class="card-header bg-primary text-white">
|
<h4 class="mb-0">
|
<i class="bi bi-plus-circle me-2"></i>创建新实例
|
</h4>
|
</div>
|
<div class="card-body">
|
<form method="post" id="createForm">
|
<div asp-validation-summary="ModelOnly" class="alert alert-danger" role="alert"></div>
|
|
<!-- 基本信息 -->
|
<h5 class="mb-3">
|
<i class="bi bi-info-circle me-2"></i>基本信息
|
</h5>
|
|
<div class="row mb-3">
|
<div class="col-md-6">
|
<label asp-for="Input.Id" class="form-label required">实例ID</label>
|
<input asp-for="Input.Id" class="form-control" placeholder="例如: plc-simulator-1" />
|
<span asp-validation-for="Input.Id" class="text-danger"></span>
|
<small class="text-muted">唯一标识符,只能包含字母、数字、下划线和连字符</small>
|
</div>
|
<div class="col-md-6">
|
<label asp-for="Input.Name" class="form-label required">实例名称</label>
|
<input asp-for="Input.Name" class="form-control" placeholder="例如: 1号PLC仿真器" />
|
<span asp-validation-for="Input.Name" class="text-danger"></span>
|
</div>
|
</div>
|
|
<div class="row mb-3">
|
<div class="col-md-6">
|
<label asp-for="Input.PLCType" class="form-label required">PLC型号</label>
|
<select asp-for="Input.PLCType" class="form-select">
|
<option value="0">S7-200 Smart</option>
|
<option value="1" selected>S7-1200</option>
|
<option value="2">S7-1500</option>
|
<option value="3">S7-300</option>
|
<option value="4">S7-400</option>
|
</select>
|
<span asp-validation-for="Input.PLCType" class="text-danger"></span>
|
</div>
|
<div class="col-md-6">
|
<label asp-for="Input.Port" class="form-label required">监听端口</label>
|
<input asp-for="Input.Port" class="form-control" type="number" min="1" max="65535" placeholder="102" />
|
<span asp-validation-for="Input.Port" class="text-danger"></span>
|
<small class="text-muted">S7默认端口为102</small>
|
</div>
|
</div>
|
|
<div class="row mb-3">
|
<div class="col-md-6">
|
<label asp-for="Input.ActivationKey" class="form-label">HSL激活码</label>
|
<input asp-for="Input.ActivationKey" class="form-control" placeholder="可选" />
|
<span asp-validation-for="Input.ActivationKey" class="text-danger"></span>
|
<small class="text-muted">用于HSL库的商业激活,留空使用免费版</small>
|
</div>
|
<div class="col-md-6">
|
<label asp-for="Input.AutoStart" class="form-label">自动启动</label>
|
<div class="form-check mt-2">
|
<input asp-for="Input.AutoStart" class="form-check-input" />
|
<label asp-for="Input.AutoStart" class="form-check-label">
|
服务器启动时自动启动此实例
|
</label>
|
</div>
|
</div>
|
</div>
|
|
<hr class="my-4">
|
|
<!-- 内存配置 -->
|
<div class="d-flex justify-content-between align-items-center mb-3">
|
<h5 class="mb-0">
|
<i class="bi bi-memory me-2"></i>内存配置
|
</h5>
|
<button type="button" class="btn btn-outline-secondary btn-sm" onclick="resetMemoryConfig()">
|
<i class="bi bi-arrow-counterclockwise me-1"></i>重置为默认值
|
</button>
|
</div>
|
|
<div class="row mb-3">
|
<div class="col-md-4">
|
<label asp-for="Input.MRegionSize" class="form-label">M区域大小</label>
|
<input asp-for="Input.MRegionSize" class="form-control" type="number" min="0" placeholder="1024" />
|
<span asp-validation-for="Input.MRegionSize" class="text-danger"></span>
|
</div>
|
<div class="col-md-4">
|
<label asp-for="Input.IRegionSize" class="form-label">I区域大小</label>
|
<input asp-for="Input.IRegionSize" class="form-control" type="number" min="0" placeholder="256" />
|
<span asp-validation-for="Input.IRegionSize" class="text-danger"></span>
|
</div>
|
<div class="col-md-4">
|
<label asp-for="Input.QRegionSize" class="form-label">Q区域大小</label>
|
<input asp-for="Input.QRegionSize" class="form-control" type="number" min="0" placeholder="256" />
|
<span asp-validation-for="Input.QRegionSize" class="text-danger"></span>
|
</div>
|
</div>
|
|
<div class="row mb-3">
|
<div class="col-md-4">
|
<label asp-for="Input.DBBlockCount" class="form-label">DB块数量</label>
|
<input asp-for="Input.DBBlockCount" class="form-control" type="number" min="0" placeholder="100" />
|
<span asp-validation-for="Input.DBBlockCount" class="text-danger"></span>
|
</div>
|
<div class="col-md-4">
|
<label asp-for="Input.DBBlockSize" class="form-label">DB块大小</label>
|
<input asp-for="Input.DBBlockSize" class="form-control" type="number" min="0" placeholder="1024" />
|
<span asp-validation-for="Input.DBBlockSize" class="text-danger"></span>
|
</div>
|
<div class="col-md-2">
|
<label asp-for="Input.TRegionCount" class="form-label">定时器数量</label>
|
<input asp-for="Input.TRegionCount" class="form-control" type="number" min="0" placeholder="64" />
|
<span asp-validation-for="Input.TRegionCount" class="text-danger"></span>
|
</div>
|
<div class="col-md-2">
|
<label asp-for="Input.CRegionCount" class="form-label">计数器数量</label>
|
<input asp-for="Input.CRegionCount" class="form-control" type="number" min="0" placeholder="64" />
|
<span asp-validation-for="Input.CRegionCount" class="text-danger"></span>
|
</div>
|
</div>
|
|
<hr class="my-4">
|
|
<!-- 提交按钮 -->
|
<div class="d-flex justify-content-between">
|
<a asp-page="/Index" class="btn btn-secondary">
|
<i class="bi bi-x-lg me-1"></i>取消
|
</a>
|
<button type="submit" class="btn btn-primary">
|
<i class="bi bi-check-lg me-1"></i>创建实例
|
</button>
|
</div>
|
</form>
|
</div>
|
</div>
|
</div>
|
</div>
|
|
@section Scripts {
|
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
|
<script>
|
function resetMemoryConfig() {
|
document.querySelector('#Input_MRegionSize').value = '1024';
|
document.querySelector('#Input_IRegionSize').value = '256';
|
document.querySelector('#Input_QRegionSize').value = '256';
|
document.querySelector('#Input_DBBlockCount').value = '100';
|
document.querySelector('#Input_DBBlockSize').value = '1024';
|
document.querySelector('#Input_TRegionCount').value = '64';
|
document.querySelector('#Input_CRegionCount').value = '64';
|
}
|
</script>
|
}
|