MicrosoftMvcJQueryValidation.js ASP.NET MVC 2用于客户端验证.
有这个文件的问题只是没有正常工作,并想知道我是否有错误的版本.
我使用的版本来自期货来源.
MicrosoftMvcJQueryValidation.js
5,626 bytes
11/17/09 10:43:12am
Run Code Online (Sandbox Code Playgroud)
我认为我的版本错误有两个原因:
1)我实际上必须调用此代码才能使验证例程正常工作.这是因为现在嵌入的默认客户端验证功能FormContext.cs是Sys.Mvc.FormValidation.enableClientValidation.
ViewContext.FormContext.ClientValidationFunction = "EnableClientValidation";
Run Code Online (Sandbox Code Playgroud)
2)jquery.validate.js中有一些代码可以执行以下操作:
this.settings.errorPlacement
? this.settings.errorPlacement(label, $(element) )
: label.insertAfter(element);
Run Code Online (Sandbox Code Playgroud)
这调用此函数MicrosoftMvcJQueryValidation.js:
errorPlacement: function(error, element) {
var messageSpan = fieldToMessageMappings[element.attr("name")];
$(messageSpan).empty();
$(messageSpan).removeClass("field-validation-valid");
$(messageSpan).addClass("field-validation-error");
error.removeClass("input-validation-error");
error.attr("_for_validation_message", messageSpan);
error.appendTo(messageSpan);
},
Run Code Online (Sandbox Code Playgroud)
问题是元素已被jQuery.validatejQuery $(element)表达式包装.
因此element.attr("name")未定义,但element[0].attr("name")有效.
我MicrosoftMvcJQueryValidation.js从微软的网站上下载了期货.`
我找不到任何其他MicrosoftMvcJQueryValidation版本 - 但我敢肯定必须有一个版本.有人可以帮忙吗?
MVC没有为我的viewmodel生成客户端验证规则.HTML只包含这个:
<script type="text/javascript">
//<![CDATA[
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; }
window.mvcClientValidationMetadata.push({"Fields":[],"FormId":"form0","ReplaceValidationSummary":false});
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)
注意Fields[]是空的!
我的视图是强类型的,并使用新的强类型HTML帮助器(TextBoxFor()等).
public class ItemFormViewModel
{
public Item Item { get; set; }
[Required] [StringLength(100)] public string Whatever { get; set; } // for demo
}
[MetadataType(typeof(ItemMetadata))]
public class Item
{
public string Name { get; set; }
public string SKU { get; set; }
public int QuantityRequired { get; set; }
// etc.
}
public class ItemMetadata
{
[Required] [StringLength(100)] …Run Code Online (Sandbox Code Playgroud) validation asp.net-mvc asp.net-mvc-2-validation asp.net-mvc-2