0
我在我的表單上有兩個datepickers字段,我想驗證到目前爲止大於從日期。MVC5驗證 - 迄今爲止大於日期
MVC5中有任何驗證屬性,我可以用它來實現這個嗎?
我也想這樣做在客戶端,可以請一些身體幫助在MVC中啓用客戶端驗證?
非常感謝
編輯:創建自定義屬性,但是客戶端驗證無法正常工作。
public class ValidateToDateAttribute : ValidationAttribute, IClientValidatable
{
public string errorMessageKey { get; private set; }
public ValidateToDateAttribute(string errorMessageKey)
{
this.errorMessageKey = errorMessageKey;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
var viewModel = (TransactionViewModel)validationContext.ObjectInstance;
if (viewModel.ToDate.CompareTo(viewModel.FromDate) < 0)
{
return new ValidationResult(new ResourceManager(typeof(ValidationErrorMessages)).GetString(errorMessageKey));
}
}
return ValidationResult.Success;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var modelClientValidationRule = new ModelClientValidationRule
{
ValidationType = "validatetodate",
ErrorMessage = new ResourceManager(typeof(ValidationErrorMessages)).GetString(errorMessageKey)
};
yield return modelClientValidationRule;
}
}
}
Bundle.Config
bundles.Add(new ScriptBundle("~/bundles/jqueryvalidation").Include(
"~/Scripts/jquery.validate.unobtrusive.min.js",
"~/Scripts/jquery.unobtrusive-ajax.min.js"));
視圖模型
[Display(ResourceType = typeof(DisplayLabelText), Name = "FromDate")]
public DateTime FromDate { get; set; }
[Display(ResourceType = typeof(DisplayLabelText), Name = "ToDate")]
[ValidateToDate("ToDateMustBeGreater")]
public DateTime ToDate { get; set; }
在查看:
<div class="col-sm-7 margin-top-10">
<div class="col-sm-12">
@Html.LabelFor(m => m.FromDate, new { @class = "col-sm-3 form-group control-label" })
<div class="col-sm-8">
@Html.TextBoxFor(m => m.FromDate, "{0:MMM dd yyyy}", new { @class = "datepicker", disabled = "disabled" })
</div>
</div>
<div class="col-sm-12">
@Html.LabelFor(m => m.ToDate, new { @class = "col-sm-3 form-group control-label" })
<div class="col-sm-8">
@Html.TextBoxFor(m => m.ToDate, "{0:MMM dd yyyy}", new { @class = "datepicker", disabled = "disabled" })
@Html.ValidationMessageFor(m => m.ToDate)
</div>
</div>
<button type="submit" class="apply-filter-button">Apply Filter</button>
</div>
我們不是在這裏爲您提供完整的教程或做所有的工作/研究爲您的。我們主要是在這裏幫助你寫一段你寫的代碼或回答一個簡明的問題。請參閱:http://stackoverflow.com/help/how-to-ask – Sparky
爲什麼在詢問MVC5時如何使用MVC3和MVC4標籤?這裏不允許使用標籤發送垃圾郵件。 – Sparky
沒有意圖標記垃圾郵件,我只是認爲mvc3和mvc4的解決方案可能仍然適用於MVC5。 – Vin05