有18种模型(类C#),其中进行了自定义验证(必需,字符串长度,显示,数据类型等)。对于这些模型,将自动生成添加/更改的形式,以便在本质上不产生18 * 2相同的形式。
借助“ ViewBag.Model”显示表单上的数据。数据字段本身使用属性“ ViewBag.Properties”的数组在循环中输出。列的名称,取决于数组“ ViewBag.Columns”的语言。生成的字段的类型:数字,日期,文本,数组类型“ ViewBag.TypeList”。 我如何不使用JavaScript,而是使用每个模型的基本自定义验证? 页面代码:
@using System.Reflection;
<style>
.adminFormControl {
padding: 0px 50px 0px 50px;
max-width: 100%;
width: 100%;
min-height: 38px;
height: 100%;
}
</style>
<div style="text-align: -webkit-center;">
<h4>
@ViewBag.Method
</h4>
@if (ViewBag.Method == NanoWiki.Resources.Translations.Add)
{
<p>
@NanoWiki.Resources.Translations.IgnoredId
</p>
}
<hr />
<div class="row">
<div class="col-md-12">
<form asp-action="Apply" asp-controller="Admin" asp-route-Table="@ViewBag.Table" asp-route-Method="@ViewBag.Method" asp-route-Page="@ViewBag.Page"
data-ajax="true" data-ajax-method="POST" data-ajax-success="AjaxLoad" data-ajax-update="#PartialViewId">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
@for (int i = 0; i < ViewBag.Columns.Count; i++)
{
<div class="form-group adminFormControl" style="text-align: left;">
@Html.Label(ViewBag.Properties[i].Name, ViewBag.Columns[i], new { @class = "control-label" })
<input class="form-control adminFormControl" type="@ViewBag.TypeList[i]" value="@ViewBag.Properties[i].GetValue(ViewBag.Model, null)"
name="@ViewBag.Properties[i].Name" />
</div>
}
<div class="form-group adminFormControl">
<input type="submit" value="@NanoWiki.Resources.Translations.Save" class="btn btn-default adminFormControl" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="ListView" asp-controller="Admin" asp-route-Table="@ViewBag.Table" asp-route-Page="@ViewBag.Page"
data-ajax="true" data-ajax-method="POST" data-ajax-update="#PartialViewId">
@NanoWiki.Resources.Translations.Back
</a>
</div>
</div>
@section Scripts {
<script src="~/js/adminPage.js"></script>
}