【问题标题】:ASP.NET MVC client validation from Service Layer来自服务层的 ASP.NET MVC 客户端验证
【发布时间】:2012-07-09 05:00:33
【问题描述】:

我在关注这篇文章

http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validating-with-a-service-layer-cs

在我的 ASP.NET MVC Web 应用程序中包含一个带有业务逻辑的服务层。

我可以使用ModelState 类将消息从服​​务层传递到Html.ValidationSummary 中的视图模型。

我在视图模型上执行基本的验证逻辑(使用DataAnnotation 属性),我默认启用了ClientValidation,它会在我的表单的每个字段上显示错误消息。

来自服务层的业务逻辑错误消息仅在将表单发布到服务器后才会显示在Html.ValidationSummary

从服务层验证后,我想突出显示一个或多个字段,并在这些字段上显示来自服务层的消息,而不是 Html.ValidationSummary

知道怎么做吗?

【问题讨论】:

    标签: asp.net-mvc validation model-view-controller service-layer


    【解决方案1】:

    感谢达林,我找到了解决问题的方法。

    详细说明:

    我可以使用

     _validatonDictionary.AddError("Name of my field", "Custom message")
    

    这样我就可以显示一条消息并突出显示该特定字段(使用 DataAnnotation 非常简单)。

    如果我只想在 ValidationSummary 中显示一条消息而不突出显示我使用的特定字段

    _validatonDictionary.AddError(string.Empty, "Custom message")
    

    请注意string.Empty

    【讨论】:

      【解决方案2】:

      这是验证在服务器上的外观:

      protected bool ValidateProduct(Product productToValidate)
      {
          if (string.IsNullOrEmpty(productToValidate.Name))
              _validatonDictionary.AddError("Name", "Name is required.");
          if (string.IsNullOrEmpty(productToValidate.Description))
              _validatonDictionary.AddError("Description", "Description is required.");
          if (productToValidate.UnitsInStock < 0)
              _validatonDictionary.AddError("UnitsInStock", "Units in stock cannot be less than zero.");
          return _validatonDictionary.IsValid;
      }
      

      您所要做的就是为视图中的这些字段设置相应的ValidationMessageFor 帮助器,并且来自服务器的错误消息将关联到相应的字段:

      @using (Html.BeginForm())
      {
          <div>
              @Html.LabelFor(x => x.Name)
              @Html.EditorFor(x => x.Name)
              @Html.ValidationMessageFor(x => x.Name)
          </div>
          <div>
              @Html.LabelFor(x => x.Description)
              @Html.EditorFor(x => x.Description)
              @Html.ValidationMessageFor(x => x.Description)
          </div>
          <button type="submit">Create</button>
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-14
        • 2014-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-03
        • 2013-10-09
        相关资源
        最近更新 更多