I have a model with some validations below
        public class RequestABook
        {
            [Required(ErrorMessage = "Name Required")]
            [DisplayName("Book Name")]
            public string BookName { get; set; }
            [Required(ErrorMessage = "Zipcode Required")]
            [DisplayName("Zipcode")]
            public string ZipCode { get; set; }
            [Required(ErrorMessage = "Contact Name Required")]
            [DisplayName("Contact Name")]
            public string ContactName { get; set; }
            [Required(ErrorMessage = "Email Id Required")]
            [DataType(DataType.EmailAddress)]
            public string Email { get; set; }
            [Required(ErrorMessage = "Book Description Required")]
            public string BookDescription { get; set; }
            [Required(ErrorMessage = "You need to check one answer")]
            public string Answer { get; set; }
        }
I have a view model here
        public class RequestViewModel
        {
            public RequestABook MyTestViewModel { get; set; }   
        }
I have my main page here that loads
        @model BookRequestValidation.Models.RequestViewModel
        @{
            ViewBag.Title = "RequestABook";
        }
        <h2>RequestABook</h2>
        @using (Html.BeginForm())
        {
            @Html.ValidationSummary(true)
            <fieldset>
                <legend>Request Book</legend>
                <div class="editor-label">
                    @Html.LabelFor(m => m.MyTestViewModel.BookName)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(m => m.MyTestViewModel.BookName)
                    @Html.ValidationMessageFor(m => m.MyTestViewModel.BookName)
                </div>
                <div class="editor-label">
                    @Html.LabelFor(m => m.MyTestViewModel.ZipCode)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(m => m.MyTestViewModel.ZipCode)
                    @Html.ValidationMessageFor(m => m.MyTestViewModel.ZipCode)
                </div>
                <div class="editor-label">
                    @Html.LabelFor(m => m.MyTestViewModel.ContactName)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(m => m.MyTestViewModel.ContactName)
                    @Html.ValidationMessageFor(m => m.MyTestViewModel.ContactName)
                </div>
                <div class="editor-label">
                    @Html.LabelFor(m => m.MyTestViewModel.Email)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(m => m.MyTestViewModel.Email)
                    @Html.ValidationMessageFor(m => m.MyTestViewModel.Email)
                </div>
                <div class="editor-label">
                    @Html.LabelFor(m => m.MyTestViewModel.BookDescription)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(m => m.MyTestViewModel.BookDescription)
                    @Html.ValidationMessageFor(m => m.MyTestViewModel.BookDescription)
                </div>
                <div id="HCBudget" class="validation">
                    <label for="budgethealth">Budget Health</label>
                    @Html.RadioButton("Answer", "Red")
                    @Html.RadioButton("Answer", "Yellow")
                    @Html.RadioButton("Answer", "Green")  
                    @Html.ValidationMessageFor(m => m.MyTestViewModel.Answer)   
                </div>
                <input type="submit" value="Request Book" />
            </fieldset> 
            } 
Question: How do you guys handle validation with models used in a viewmodel. Before I used this in a viewmodel everything was working well. By the time I used a viewmodel validation stopped working.
Here is what the post action looks like.
        public ActionResult RequestABook()
        {
            return View();
        }
        [HttpPost]
        public ActionResult RequestABook(RequestABook quote)
        {
            return View();
        }
 
    