Получить радиокнопку, выбранную в соответствии со значением в базе данных, с помощью mvc3

у меня есть список переключателей в моем представлении создания. Он создается вместе с флажком при выборе раскрывающегося списка.

@model IEnumerable<Admin.Models.viewmodel>
@foreach (var item in Model)
{
    <label>
           @Html.CheckBox("User", item.Selected, new { @id = "User" + item.Value, @value = item.Value })
            @item.Text
    </label>
    <label>
        @Html.RadioButton("rdnUser" + item.Value.TrimStart(), 1, item.IsSelected,new { @id = "rdnUser"})Primary                  

    </label>
    <label>
       @Html.RadioButton("rdnUser" + item.Value.TrimStart(), 2,item.IsSelected, new { @id = "rdnUser"})Secondary
    </label>
}

Я сохраняю значение радиокнопки в поле UserType в таблице UserMapping.

Когда я нажимаю ссылку «Изменить», я хочу, чтобы радиокнопка выбиралась в соответствии со значением базы данных.

Создал модель представления, чтобы принимать значения в флажке, а модель представления radiobutton.viewpartial: -

public class viewpartial : System.Web.Mvc.SelectListItem
    {
        public int Values { get; set; }
        public bool IsSelected { get; set; }
    }

Запрос: -

var query = (from u in UserMapping
                                where u.UserID == id && u.Active == 1
                                join f in Financial on u.FinancialID equals f.FinancialID
                              into c
                                from d in c.DefaultIfEmpty()
                                select new viewpartialIFC
                                {
                                    Text = d.FiName,
                                    Value = SqlFunctions.StringConvert((double)d.FinancialID),
                                    Selected = d.FinancialID == u.FinancialID ? true : false,
                                    Values = u.UserType,
                                  //IsSelected=???
                                }).Distinct().ToList();

какие изменения я должен внести в запрос, чтобы выбрать радиокнопку.


person Mizbella    schedule 10.05.2013    source источник


Ответы (1)


Таким образом вы можете создать список пользователей и выбрать их (флажок) и выбрать определенную роль (переключатели):

ViewModel:

public class AdminViewModel
{
  public int Id { get; set; }
  public string Name { get; set; }
  public bool isSelected { get; set; }
  public int RadioValue { get; set; }
}

Контроллер:

public class HomeController : Controller
{
  public ActionResult Index()
  {
    var data = GenerateViews();

    return View(data); 
  }

  [HttpPost]
  public ActionResult Index(IList<AdminViewModel> data)
  {
    var selectedViews = data.Where(d => d.isSelected == true);

    foreach (var selected in selectedViews)
    {
      //selected.Id;
      //selected.RadioValue;
    }

    System.Diagnostics.Debugger.Break();

    return View(data);
  }

  private IList<AdminViewModel> GenerateViews()
  {
    var output = new List<AdminViewModel>();
    var rand = new Random();

    for (var count = 1; count <= 10; ++count)
    {
      var newView = new AdminViewModel();

      newView.Id = count;
      newView.Name = "Name " + count.ToString();
      newView.isSelected = false;
      newView.RadioValue = rand.Next(1, 3);

      output.Add(newView);
    }

    return output;
  }
}

Вид:

@model IList<WebMVC3.Controllers.AdminViewModel>

<h2>Index</h2>

@using (Html.BeginForm())
{

  //foreach (var item in Model)
  for(var index = 0; index < Model.Count; ++index)
  {
    <div>
      @Html.HiddenFor(m => Model[index].Id)
      <label>
        @Html.CheckBoxFor(m => Model[index].isSelected, Model[index].isSelected)
        @Model[index].Name
      </label>
      <label>
        @Html.RadioButtonFor(m => Model[index].RadioValue, 1) 
        Primary
      </label>
      <label>
        @Html.RadioButtonFor(m => Model[index].RadioValue, 2) 
        Secondary
      </label>
    </div>
  }
  <input type="submit" value="Save" />  
}
person SBurris    schedule 15.05.2013