MVC 和 jQuery 验证,本地主机与实时输出不同 HTML
MVC & jQuery Validate, different HTML output on localhost vs live
一个非常简单的例子,其中发生了一些奇怪的事情。以前没注意过,第一次看到
给自己创建了一个字段如下的模型:
[Display(Name = "Full Name")]
[Required(ErrorMessage = "Please enter your Full name")]
[RegularExpression(@"^((\b[a-zA-Z]{2,40}\b)\s*){2,}$", ErrorMessage = "Please enter your first and last name.")]
public string FullName { get; set; }
Razor 视图:
<div class="form-group">
@Html.TextBoxFor(m => m.FullName, new { placeholder = "Full Name", @Class = "form-control input-sm" })
@Html.ValidationMessageFor(m => m.FullName)
</div>
当我提交无效表单时,我收到了一条错误消息,这是我应该做的...但是本地主机上的 HTML 与服务器上的不同。
Localhost 给了我一个带有一些 aria 标签的 span id="FullName-error"。实时服务器为我提供了一个跨度 ="FullName",没有 aria 标签。生产上的文件无非是发布和上传。
我的本地主机生成以下内容(这是在 chrome 调试 window 中检查它):
<div class="form-group">
<input class="form-control input-sm input-validation-error" data-val="true" data-val-regex="Please enter your first and last name." data-val-regex-pattern="^((\b[a-zA-Z]{2,40}\b)\s*){2,}$" data-val-required="Please enter your Full name" id="FullName" name="FullName" placeholder="Full Name" type="text" value="" aria-required="true" aria-invalid="true" aria-describedby="FullName-error">
<span class="field-validation-error" data-valmsg-for="FullName" data-valmsg-replace="true">
<span id="FullName-error" class="">Please enter your Full name</span>
</span>
</div>
实时服务器生成以下内容:
<div class="form-group">
<input class="form-control input-sm input-validation-error" data-val="true" data-val-regex="Please enter your first and last name." data-val-regex-pattern="^((\b[a-zA-Z]{2,40}\b)\s*){2,}$" data-val-required="Please enter your Full name" id="FullName" name="FullName" placeholder="Full Name" type="text" value="">
<span class="field-validation-error" data-valmsg-for="FullName" data-valmsg-replace="true">
<span for="FullName" generated="true" class="">Please enter your Full name</span>
</span>
</div>
任何人有任何想法或可以暗示发生了什么事吗?
我推测您使用的 Live 服务器与本地主机相比在某些方面有所不同。问题可能是实时服务器具有您正在使用的语言的不同版本,或者不包含您认为应该包含的某些包。
例如,使用 FastCGI 的应用程序,很多服务器都有,但并非所有层都有。因此,您需要检查以确保它已在设置中启用,或者您想要的版本在您使用的任何主机上都存在。
似乎在发布 Web 应用程序时发生了一些变化。
我觉得jQueryValidate
的版本有问题,请参考What is the "generated" attribute seen in some HTML tag used for?
一个非常简单的例子,其中发生了一些奇怪的事情。以前没注意过,第一次看到
给自己创建了一个字段如下的模型:
[Display(Name = "Full Name")]
[Required(ErrorMessage = "Please enter your Full name")]
[RegularExpression(@"^((\b[a-zA-Z]{2,40}\b)\s*){2,}$", ErrorMessage = "Please enter your first and last name.")]
public string FullName { get; set; }
Razor 视图:
<div class="form-group">
@Html.TextBoxFor(m => m.FullName, new { placeholder = "Full Name", @Class = "form-control input-sm" })
@Html.ValidationMessageFor(m => m.FullName)
</div>
当我提交无效表单时,我收到了一条错误消息,这是我应该做的...但是本地主机上的 HTML 与服务器上的不同。
Localhost 给了我一个带有一些 aria 标签的 span id="FullName-error"。实时服务器为我提供了一个跨度 ="FullName",没有 aria 标签。生产上的文件无非是发布和上传。
我的本地主机生成以下内容(这是在 chrome 调试 window 中检查它):
<div class="form-group">
<input class="form-control input-sm input-validation-error" data-val="true" data-val-regex="Please enter your first and last name." data-val-regex-pattern="^((\b[a-zA-Z]{2,40}\b)\s*){2,}$" data-val-required="Please enter your Full name" id="FullName" name="FullName" placeholder="Full Name" type="text" value="" aria-required="true" aria-invalid="true" aria-describedby="FullName-error">
<span class="field-validation-error" data-valmsg-for="FullName" data-valmsg-replace="true">
<span id="FullName-error" class="">Please enter your Full name</span>
</span>
</div>
实时服务器生成以下内容:
<div class="form-group">
<input class="form-control input-sm input-validation-error" data-val="true" data-val-regex="Please enter your first and last name." data-val-regex-pattern="^((\b[a-zA-Z]{2,40}\b)\s*){2,}$" data-val-required="Please enter your Full name" id="FullName" name="FullName" placeholder="Full Name" type="text" value="">
<span class="field-validation-error" data-valmsg-for="FullName" data-valmsg-replace="true">
<span for="FullName" generated="true" class="">Please enter your Full name</span>
</span>
</div>
任何人有任何想法或可以暗示发生了什么事吗?
我推测您使用的 Live 服务器与本地主机相比在某些方面有所不同。问题可能是实时服务器具有您正在使用的语言的不同版本,或者不包含您认为应该包含的某些包。
例如,使用 FastCGI 的应用程序,很多服务器都有,但并非所有层都有。因此,您需要检查以确保它已在设置中启用,或者您想要的版本在您使用的任何主机上都存在。
似乎在发布 Web 应用程序时发生了一些变化。
我觉得jQueryValidate
的版本有问题,请参考What is the "generated" attribute seen in some HTML tag used for?