Click here to Skip to main content
13,043,491 members (50,563 online)

Get checked value of RadioButton from Remote validation, ASP.Net MVC 3

Thanh Hoang asked:

Open original thread

I am using ASP.NET, MVC 3, Razor
I use Remote for server validation. My problem is the checked value of RadioButton is always the value of the first RadioButton

My Model:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
namespace AdminSite.Models
    public class GroupAndCM
        public int GroupAndCMID { get; set; }
        [Display(Name = "Group")]
        [Required(ErrorMessage = "Group is required.")]
        [Remote("ValidateGroupAndCM", "AccessCtrl", AdditionalFields = "selectedCMID", HttpMethod = "Post", ErrorMessage = "Selected CM is set for this Group.")]
        public int? GroupID { get; set; }
        [Display(Name = "CM")]
        [Required(ErrorMessage = "CM is required.")]
        public int CMID { get; set; }
        public virtual Group Group { get; set; }
        public virtual CM CM { get; set; }

My View

<div class="editor-field">
            <table style="width:100%;">
                        int cnt = 0;
                        foreach (AdminSite.Models.CM cm in ViewBag.CMs)
                            if (cnt++ % 3 == 0)
                                @: </tr> <tr>
                                @Html.RadioButton("selectedCMID", cm.CMID) @cm.CMName
@Html.DropDownListFor(model => model.GroupID, (SelectList)ViewBag.Groups, string.Empty, new { @style = "width:220px;" })
        @Html.ValidationMessageFor(model => model.GroupID)

And here is my Controller

public ActionResult ValidateGroupAndCM(int groupID, int? selectedCMID)
            bool flag = true;
            int t = (int)selectedCMID;
            var query = from gc in db.GroupAndCMs
                        where gc.GroupID == groupID && gc.CMID == t
                        select gc;
            if (query.SingleOrDefault() != null)
                flag = false;
            return Json(flag, JsonRequestBehavior.AllowGet);

When user select a value from Group (DropDown), it will trigger then function ValidateGroupAndCM of controller:

public ActionResult ValidateGroupAndCM(int groupID, int? selectedCMID)

The value of "groupID" is OK, exactly as seleted value
but the "selectedCMID" is wrong, it is always return the value of the first RadioButton although the second RadioButton is selected.

This is the view rendered:

<input id="selectedCMID" name="selectedCMID" type="radio" value="1"> RadioButton1
<input id="selectedCMID" name="selectedCMID" type="radio" value="2"> RadioButton2

Please help!

Sorry for my english :)
Tags: ASP.NET, MVC, validation, Razor, Remote


When answering a question please:
  1. Read the question carefully.
  2. Understand that English isn't everyone's first language so be lenient of bad spelling and grammar.
  3. If a question is poorly phrased then either ask for clarification, ignore it, or edit the question and fix the problem. Insults are not welcome.
Let's work to help developers, not make them feel stupid.
Please note that all posts will be submitted under the The Code Project Open License (CPOL).

Advertise | Privacy | Mobile
Web02 | 2.8.170713.1 | Last Updated 26 Mar 2009
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100