Проверяете ли вы на стороне клиента с помощью помощника ValidationMessage MVC или проверяете в контроллере?Если вы публикуете страницу и проверяете ее с помощью ModelState.IsValid на контроллере, убедитесь, что вы возвращаете View с той же сущностью.Если вы выполняете проверку на стороне клиента, можете ли вы просто опубликовать пример HTML-кода для переключателей?
Вы устанавливаете параметр переключателя по умолчанию для document.ready (...) или загружаете (...) на стороне клиента, используя JQuery / Javascript?В противном случае я проверил следующее: оно работает нормально и состояние переключателя сохраняется:
Модель:
public class MyModel
{
[Required(ErrorMessage="Name is required")]
public string Name { get; set; }
public bool IsSelected { get; set; }
}
Просмотр:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<TestSample.Models.MyModel>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Home Page
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<%Html.BeginForm(); %>
<%Html.EnableClientValidation(); %>
<p>
<%=Html.RadioButtonFor(m=>m.IsSelected,"true") %>
<%=Html.RadioButtonFor(m=>m.IsSelected,"false") %>
<%=Html.TextBoxFor(m => m.Name) %>
<%=Html.ValidationMessageFor(m => m.Name, "Required") %>
<input type="submit" id="btnSubmit" name="name" value="Submit" />
</p>
<%Html.EndForm(); %>
<script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
</asp:Content>
Контроллер:
[HttpPost]
public ActionResult Index(MyModel model)
{
if (ModelState.IsValid)
{//Your code goes here }
return View(model);
}