Joy Sikdar Ответов: 1

Как я могу получить проверенные значения флажков от контроллера.


Это моя модель..

public class SubscribedService
	{
		public int ServiceId { get; set; }
		public string ServiceName { get; set; }
		public bool Subscribed { get; set; }
	}


	public class RegistrationModel
	{
		public RegistrationModel()
		{
			Services = new List<SubscribedService>();
			using (CommonSchemaContainer container = new CommonSchemaContainer())
			{
				var dbServices = container.Services.ToList();
				dbServices.ForEach(a =>
				{
					Services.Add(new SubscribedService()
					{
						ServiceId = a.ServiceId,
						ServiceName = a.ServiceName,
                        Subscribed = false
					});
				});
			}
		}
public List<SubscribedService> Services { get; set; }



Посмотреть для галочки уже
@for (int i = 0; i < Model.Services.Count(); i++)
				{
					@Html.CheckBoxFor(m => m.Services.ElementAt(i).Subscribed, new { @id = "chk" + i.ToString() })
					@Html.HiddenFor(m => m.Services.ElementAt(i).ServiceId, new { @id = "hdn" + i.ToString() })
					@Html.DisplayFor(m => m.Services.ElementAt(i).ServiceName, new { @id = "lbl" + i.ToString() })
					<br />
				}


Мне нужно получить выбранные флажки от контроллера.Но "подписанная" сущность всегда становится ложной.

Контроллер есть..

foreach (SubscribedService ServiceEntity in model.Services)
                    {
                        if (ServiceEntity.Subscribed)
                        {
                            string str = ServiceEntity.ServiceName;
                        }
                    }


Что я уже пробовал:

Пытался проверить свойство, но всегда ложь.

1 Ответов

Рейтинг:
12

Richard Deeming

Измените свой взгляд на:

@for (int i = 0; i < Model.Services.Count; i++)
{
    @Html.CheckBoxFor(m => m.Services[i].Subscribed)
    @Html.HiddenFor(m => m.Services[i].ServiceId)
    @Html.HiddenFor(m => m.Services[i].ServiceName)
    @Html.DisplayFor(m => m.Services[i].ServiceName)
    <br />
}

Вам нужно использовать индексатор ([i]) вместо того, чтобы ElementAt метод.

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

Возможно, Вам также потребуется переместить инициализацию из RegistrationModel конструктор, так как он также будет вызываться при загрузке разнесенных значений.