Hi,
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
{
[Key]
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%;">
<tr>
@{
int cnt = 0;
foreach (AdminSite.Models.CM cm in ViewBag.CMs)
{
if (cnt++ % 3 == 0)
{
@: </tr> <tr>
}
@:<td>
@Html.RadioButton("selectedCMID", cm.CMID) @cm.CMName
@:</td>
}
@:</tr>
}
</table>
</div>
@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 :)