在一个以上模型意味着asp.net核心C#的表单上使用验证

时间:2018-07-14 17:32:25

标签: javascript c# asp.net-mvc razor asp.net-core

有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>
}

0 个答案:

没有答案