【问题标题】:How to give validation summary for specific models in MVC?如何为 MVC 中的特定模型提供验证摘要?
【发布时间】:2018-02-24 06:34:55
【问题描述】:

在 MVC 中创建表单。尝试在表单中添加验证摘要。

但它显示所有字段的验证。

如何用星号显示特定的验证摘要?

查看

 <div class="col-md-12 table-bordered" style="padding: 20px; margin:10px;">
    <div class="col-md-12">@Html.ValidationSummary(false, "", new { @class = "text-danger" })</div>
    <div class="col-md-12" style="padding:10px;">
        <div class="col-md-6">
            <div style="width:95%;">
                @Html.LabelFor(Model => Model.ItemName, new { style = "font-weight:bold;", @maxlength = "100" })
                @Html.TextBoxFor(Model => Model.ItemName)
                <span class="text-danger"> @Html.ValidationMessageFor(Model => Model.ItemName) </span>
            </div>
        </div>
        <div class="col-md-6">
            <div style="width:75%;">
                @Html.LabelFor(Model => Model.ActiveProductGroup, new { style = "font-weight:bold;" })
                @Html.DropDownListFor(Model => Model.ProductGroupID, new SelectList(ViewBag.ActiveProductGroup, "Value", "Text"), "--Select Value--", new { style = "Width:95%" })
                <span class="text-danger"> @Html.ValidationMessageFor(Model => Model.ActiveProductGroup) </span>
            </div>
        </div>
    </div>
    <div class="col-md-12" style="padding:10px;">
        <div class="col-md-3">
            <div style="width:70%;">
                @Html.LabelFor(Model => Model.SequenceNumber, new { style = "font-weight:bold;" })
                @Html.TextBoxFor(Model => Model.SequenceNumber, new { style = "text-align:right", Value = "", @maxlength = "3" })
                <span class="text-danger"> @Html.ValidationMessageFor(Model => Model.SequenceNumber) </span>
            </div>
        </div>
        <div class="col-md-3">
            <div style="width:50%;">
                @Html.LabelFor(Model => Model.UnitPrice, new { style = "font-weight:bold;" })
                @Html.TextBoxFor(Model => Model.UnitPrice, new { style = "text-align:right", Value = "", @maxlength = "5" })
                <span class="text-danger"> @Html.ValidationMessageFor(Model => Model.UnitPrice) </span>
            </div>
        </div>
        <div class="col-md-3">
            <div style="width:50%;">
                @Html.LabelFor(Model => Model.Quantity, new { style = "font-weight:bold;" })
                @Html.TextBoxFor(Model => Model.Quantity, new { style = "text-align:right", Value = "", @maxlength = "5" })
                <span class="text-danger"> @Html.ValidationMessageFor(Model => Model.Quantity) </span>
            </div>
        </div>
        <div class="col-md-3">
            <div style="width:80%;">
                @Html.LabelFor(Model => Model.EstimatedDeliveryDays, new { style = "font-weight:bold;" })
                @Html.TextBoxFor(Model => Model.EstimatedDeliveryDays, new { style = "text-align:right", Value = "", @maxlength = "2" })
                <span class="text-danger"> @Html.ValidationMessageFor(Model => Model.EstimatedDeliveryDays) </span>
            </div>
        </div>
    </div>
</div>

截图

型号:-

  • 只需要项目名称、数量、单价和单价的验证摘要 产品组下拉菜单

  • 是否可以获得特定模型的验证摘要?

【问题讨论】:

  • 您是否仅验证以下字段:Item NameQuantityunit Priceproduct Group?您能否也向我们展示您的模型类。
  • 您的表单只有 6 个表单控件,这意味着您的视图模型应该只包含 6 个属性(不要在视图中使用数据模型)
  • 使用 HTML helpers 与您希望通过表单提交的相同数量的视图模型属性,避免使用直接绑定到视图页面的数据模型。
  • 是的@Oluwafemi 再次检查。添加模型截图
  • @TetsuyaYamamoto 我正在使用其他表的下拉列表在此表中插入值

标签: asp.net-mvc validation model


【解决方案1】:

根据您的查看,您的视图模型应仅包含视图中存在的属性。 ex.ItemName,产品组图片,序列号。等等
创建另一个仅包含这些属性的视图模型并在您的视图中使用它。

但是,您使用的某些属性(例如 int32 等)始终会在默认情况下进行验证。如果您想更改该行为,请为它们创建可空属性。

【讨论】:

  • 删除所有验证属性并不能解决任何问题 - OP 有许多属性是 longint32 等,这些属性始终是必需的(它们不能是 null
  • 是的,如果他有类似的东西,它总是被验证的。但如果不需要,他必须使它可以为空。
  • 但首先他应该从他的视图模型中删除所有不必要的属性并根据他的要求进行验证。
  • 完全正确(所以删除你答案的第一段 - 这是错误的)
  • @JaiminDave 是的,这是因为 int32 值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 2014-01-13
  • 1970-01-01
相关资源
最近更新 更多