【发布时间】:2016-11-23 07:21:01
【问题描述】:
我正在使用带有 Unobtrusive js 的 ASP.NET MVC,它运行得非常好,但我想为这样的事情设置一个验证规则:
我有两个值“是”和“否”的下拉列表。我也有一个文本框。
基于从下拉列表中选择的值如果
“是”我想验证输入的文本框值是否在客户端和服务器端使用 Unobtrusive 以及是否
“否”比没有验证应该起作用我的意思是,如果文本框值为空白或输入的任何值都可以,因为如果下拉列表值为“否”,我不想存储该值,该文本框不应进行任何验证。
请有人帮我解决这个问题。
我已经参考了很多 stackoverflow 问题和答案,那里的答案也很不错,但我无法将它们用于获得我的解决方案。
我在 bool 中得到了下拉选择的值,即
public bool IsTestUnit { get; set; }
[RequiredIfUniTestIsYes("IsTestUnit == true", true, ErrorMessage = "Please Enter Test Unit Job Order Number ")]
public long TestUnitJobOrder { get; set; }
我试过的代码:
public class RequiredIfUniTestIsYes : ValidationAttribute, IClientValidatable
{
public RequiredIfUniTestIsYes()
{
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var countryPropertyInfo = validationContext.ObjectInstance.GetType().GetProperty("IsTestUnit");
var countryValue = countryPropertyInfo.GetValue(validationContext.ObjectInstance, null).ToString();
if (countryValue == "True" && (value.ToString().Trim() == "" || Convert.ToInt32(value) == 0))
{
return new ValidationResult("Please Enter Unit Test Job Order Number");
}
return ValidationResult.Success;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule();
rule.ErrorMessage = "Please Enter Unit Test Job Order Number";
rule.ValidationParameters.Add("istestunit", "true");
rule.ValidationType = "isunittest";
yield return rule;
}
}
Javascript:
$.validator.addMethod("isunittest", function (state, element, country) {
var country = $('#WorkOderDetailViewModel_IsTestUnit').val();
if (country == 'True' && state == '') {
return false;
}
return true;
});
$.validator.unobtrusive.adapters.addSingleVal("isunittest", "true");
(function ($) {
$.validator.addMethod('customRequire', function (value, element) {
// your validation logic here
return true; // true if valid, otherwise false
});
$.validator.unobtrusive.adapters.add('customRequire');
})(jQuery);
我只是复制粘贴代码,并没有更改名称,所以请忽略这些错误。
【问题讨论】:
-
请发表您的尝试!
-
考虑一个 foolproof
[RequiredIf]或类似的验证属性或者你可以自己写 - The Complete Guide To Validation In ASP.NET MVC 3 - Part 2 -
@StephenMuecke 先生,我无权使用额外或第三方代码。
-
那就自己写吧!
-
阅读我给你的第二个链接。
标签: c# asp.net asp.net-mvc validation unobtrusive-validation