Не получается получить флажок для проверки на стороне клиента с помощью asp.net mvc 2. Вот мой код.
Модель
[Serializable]
public class RegistrationModel
{
bool termsAndCondition = false;
[RequiredToBeTrue(ErrorMessage = "Need terms and service")]
public bool TermsAndConditions
{
get
{
return termsAndCondition;
}
set
{
termsAndCondition = value;
}
}
}
Настраиваемый атрибут
public class RequiredToBeTrueAttribute : RequiredAttribute
{
public override bool IsValid(object value)
{
return (value != null) && (value is bool) ? (bool)value : false;
}
}
Просмотр
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<RegistrationModel>" %>
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm("Register", "Registration", new { area="Account", id = "openid_form", inRegistration = true }))
<%=Html.ValidationSummary(false) %>
blah blah blah
<div class="checkbox"><label><%= Html.CheckBoxFor(model => model.TermsAndConditions) %>I agree to the <a href="content/terms-conditions.html" id="terms-contents">terms and conditions</a> of use.</label></div>
<input type="submit" id="submit" name="submit" value="Join Now" />
<%
Html.ValidateFor(m => m.TermsAndConditions);
%>
<% } %>
В конце я пытаюсь вызвать Html.ValidateFor, чтобы выдвинуть все сообщения об ошибках вверху страницы.Однако свойство "TermsAndConditions" не проверяется на стороне клиента (прекрасно работает на стороне сервера).Это побуждает меня взглянуть на метод window.mvcClientValidationMetData при этом выталкивании mvc, и я увидел следующее:
{"FieldName":"TermsAndConditions","ReplaceValidationMessageContents":false,"ValidationMessageId":null,"ValidationRules":[]}
Что вы видите, что «ValidationRules» пустые, что означает, что он пытается его проверитьно сообщение об ошибке по какой-то причине не было отправлено клиенту.
Есть идеи?Любая помощь приветствуется.