首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Html.ValidationMessageFor()不呈现<span>元素

Html.ValidationMessageFor()不呈现<span>元素
EN

Stack Overflow用户
提问于 2016-07-27 15:22:24
回答 1查看 693关注 0票数 0

我在MVC 3中使用Html.ValidationMessageFor已经很长时间了。突然之间,这个扩展不再适用于我,而只是在一个特定的视图中。扩展在<form>标记中使用,并且页面附加了jquery.validate.min.jsjquery.validate.unobtrusive.min.js (以及其他)。我检查了站点的其他页面,这些视图使用相同的调用,生成<span>元素。

下面是我使用的标记:

代码语言:javascript
复制
<form id="assistanceRequestDiv" class="form-group js-more-assistance js-hidden">
   <p>@Translation.TextByDomain("Assistance", "need-further-assistance-contact-customer-support")</p>
   <div class="content-block left-text-children">
      <div class="content-block__quarter-column">
         @Html.LabelFor(x => x.AssistanceRequestFirstName)
         @Html.ValidationMessageFor(x => x.AssistanceRequestFirstName)
         @Html.TextBoxFor(x => x.AssistanceRequestFirstName, new {@class = "form-control", required = "required"})
      </div>
      <div class="content-block__quarter-column">
         @Html.LabelFor(x => x.AssistanceRequestLastName)
         @Html.ValidationMessageFor(x => x.AssistanceRequestLastName)
         @Html.TextBoxFor(x => x.AssistanceRequestLastName, new {@class = "form-control", required = "required"})
      </div>
      <div class="content-block__quarter-column">
         @Html.LabelFor(x => x.AssistanceRequestPhoneNumber)
         @Html.ValidationMessageFor(x => x.AssistanceRequestPhoneNumber)
         @Html.TextBoxFor(x => x.AssistanceRequestPhoneNumber, new {@class = "form-control"})
      </div>
      <div class="content-block__quarter-column set-vertical-align-bottom">
         <button id="btnSubmitAssistanceRequest" class="btn btn--primary">@Translation.Text("submit")</button>
      </div>
   </div>
</form>

数据注释

代码语言:javascript
复制
    [RequiredLocalized, DisplayNameLocalized("first-name")]
    public string AssistanceRequestFirstName { get; set; }
    [RequiredLocalized, DisplayNameLocalized("last-name")]
    public string AssistanceRequestLastName { get; set; }
    [RequiredLocalized, DisplayNameLocalized("phone-required")]
    [RegularExpressionLocalized(@"(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]‌​)\s*)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)([2-9]1[02-9]‌​|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})", "please-enter-a-valid-10-digit-phone-number", "Assistance")]
    public string AssistanceRequestPhoneNumber { get; set; }
  • RequiredLocalized --返回自定义消息的必需属性。在网站的其他地方工作。
  • 带有自定义消息的DisplayNameLocalized - DisplayName属性。在其他地方工作。

默认情况下,此表单是隐藏的,并在用户单击某个按钮时显示。下面是附在页面上的脚本:

<script src="/Scripts/jquery-1.8.3.min.js"></script> <script src="/Scripts/jquery-ui-1.10.4.custom.min.js"></script> <script src="/Scripts/jquery.unobtrusive-ajax.min.js"></script> <script src="/Scripts/jquery.validate.min.js"></script> <script src="/Scripts/jquery.validate.unobtrusive.min.js"></script> <script src="/Scripts/jquery.validate.extensions.js"></script> <script src="/Scripts/Shared/jQueryGlobalSettings.js"></script>

如果页面上有此格式的错误,则使用Javascript返回false:

代码语言:javascript
复制
$('#btnSubmitAssistanceRequest').click(function (e) {
    var $answer = $('.js-title');
    var $reqFirstName = $('#AssistanceRequestFirstName');
    var $reqLastName = $('#AssistanceRequestLastName');
    var $reqPhoneNumber = $('#AssistanceRequestPhoneNumber');

    // Check for empty fields
    if ($reqFirstName.val().trim() == "") {
        showErrorMessage($reqFirstName, 'First Name is required.');
    } else {
        clearErrorMessage($reqFirstName);
    }
    if ($reqLastName.val().trim() == "") {
        showErrorMessage($reqLastName, 'Last Name is required.');
    } else {
        clearErrorMessage($reqLastName);
    }
    if ($reqPhoneNumber.val().trim() == "") {
        showErrorMessage($reqPhoneNumber, 'Phone Number is required.');
    } else {
        clearErrorMessage($reqPhoneNumber);
    }

    // check if validation errors were thrown
    if ($(".field-validation-error").length) return false;

    $.post('/api/[obfuscated]/[obfuscated]', { answer: $answer.text(), firstName: $reqFirstName.val(), lastName: $reqLastName.val(), phoneNumber: $reqPhoneNumber.val() }, function (data) {
        if (data.success) {
            $('.request-assistance-success').css('display', 'inline');
            $(".feedback-container").slideUp(400);
        } else {
            $('.request-assistance-failure').css('display', 'inline');
            $(".feedback-container").slideUp(400);
        }
    });

    e.preventDefault();
    return true;
});
EN

回答 1

Stack Overflow用户

发布于 2016-07-29 08:11:22

替换

代码语言:javascript
复制
<button id="btnSubmitAssistanceRequest" class="btn btn--primary">@Translation.Text("submit")</button>

使用

代码语言:javascript
复制
<input type="submit" id="btnSubmitAssistanceRequest" class="btn btn--primary" Text="@Translation.Text("submit")"/>

提交表单调用不显眼的验证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38617205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档