Question

I am using radiobuttonfor in MVC 4 and I am trying to give the user a selection of items that he can select. My problem is when one of the items is selected and it's posted to the controller, the string value is a .net system.guid rather than the actual guid value.

  @foreach (var person in Model.InterviewDates[i].Interviewers) // all interviewers - not filtered
  {
      var list =  Model.InterviewDates[i].Interviewers.Select(p => p.InterviewerID).ToList();

      @Html.Raw(person.InterviewerName + " ")
      // TODO: Lambda for getting all Chairs based on interview type and interview date
      @Html.RadioButtonFor(m => m.InterviewSchedules[i].Chair, list, new { @style = "width:auto;background:none;border:none" })
      <br />
  }

I have a list of people and it contains their user ids. I then want the user to select a radio button to bind that value to the model.

-       list    Count = 3   System.Collections.Generic.List<System.Guid>
+       [0] {5fb7097c-335c-4d07-b4fd-000004e2d221}  System.Guid
+       [1] {5fb7097c-335c-4d07-b4fd-000004e2d222}  System.Guid
+       [2] {5fb7097c-335c-4d07-b4fd-000004e2d223}  System.Guid
+       Raw View        

When I post it goes here:

 [HttpPost]
 public ActionResult SubmittedInterviews(InterviewManagement InterviewManagement)
 {
     return View();
 }

This is what I can see in quick watch

-       InterviewManagement {IMecheAdmin.Models.InterviewManagement}    IMecheAdmin.Models.InterviewManagement
+       InterviewDates  Count = 0   System.Collections.Generic.List<IMecheAdmin.Models.InterviewDate>
-       InterviewSchedules  Count = 1   System.Collections.Generic.List<IMecheAdmin.Models.InterviewSchedule>
-       [0] {IMecheAdmin.Models.InterviewSchedule}  IMecheAdmin.Models.InterviewSchedule
        Chair   "System.Collections.Generic.List`1[System.Guid]"    string
        Cofacilitator   null    string
        Facilitator null    string
+       InterviewDate   {01/01/0001 00:00:00}   System.DateTime
        Location    null    string
        Observer    null    string
        Preference  false   bool
        Site    null    string
+       Raw View        
+       InterviewTypes  Count = 0   System.Collections.Generic.List<IMecheAdmin.Models.InterviewType>
        SelectedMembershipType  null    string

And this is not what I want:

Chair   "System.Collections.Generic.List`1[System.Guid]"    string

Doesn't say actual GUID. Any ideas?

Was it helpful?

Solution

Radio button is normally used where we want user to only select only one option from the provided item.

So, you need to pass single object instead of list:

foreach(var item in list)
{

    @Html.RadioButtonFor(m => m.InterviewSchedules[i].Chair, 
                         item.InterviewerID, 
                         new { @style = "width:auto;background:none;border:none" })
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top