2013-05-01 5 views
1

У меня возникают проблемы с установкой отмеченных флажков в мой контроллер mvc и их сохранение в базе данных. Я сгенерировал свой список с a для каждого цикла в представлении create.Установите флажки checkbox, сгенерированные foreach loop mvc

Мое объявление Класс:

public class Advert 
    { 
    public int AdvertId { get; set; } 
    public int SponsorId { get; set; } 
    [DisplayName("Amount")] 
    public int Amount { get; set; } 


    [DisplayName("Start date")] 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yy}")] 
    [DataType(DataType.Date)] 
    public System.DateTime StartDate { get; set; } 

    [DisplayName("End date")] 
    [DataType(DataType.Date)] 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yy}")] 
    public DateTime EndDate { get; set; } 

    public List<Continent> Continents { get; set; } 
    public List<Country> Countries { get; set; } 
    public List<Sport> Sports { get; set; } 
    public Gender Gender { get; set; } 
    public Sponsor Sponsor { get; set; } 
    public int SponsorTypeId { get; set; } 
    } 

(часть) Создать вид

<div class="editor-label"> 
    @Html.LabelFor(model => model.SponsorId, "Select sport") 
</div> 

<div class="editor-field"> 
    @foreach (var item in Model.Sports) 
    { 
      <tr> 
       <td> 
        <input type="checkbox" id="@item.SportId" name="SelectedSport" value="@item.SportId"/> 
       </td> 
       <td> 
        @item.SportName 
       </td> 
      </tr> <br /> 
    } 
</div> 

AdvertController

// POST: /Advert/Create 
[HttpPost] 
public ActionResult Create(Advert advert) 
{ 
    ViewBag.SponsorId = new SelectList(db.Sponsors, "SponsorId", "SponsorCompany", advert.SponsorId); 
    advert.SponsorTypeId = service.sponsorType(advert.Amount); 

    if (ModelState.IsValid) 
    { 
     db.Adverts.Add(advert); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    return View(advert); 
} 

Я действительно застрял в этой точке на некоторое время так что любая помощь добро пожаловать!

ответ

1

Как вы ожидаете, что связующее устройство моделирует привязку значений формы SelectedSport, когда в вашей модели нет такого поля? Вы должны добавить это в ваш Advert класс:

public IEnumerable<String> SelectedSport { get; set; } 

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

Кроме того, кажется, что вы используете базы данных Entities непосредственно на ваш взгляд. Это плохо! Вы должны создать отдельный класс AdvertViewModel и заполнить его необходимыми значениями в вашем контроллере.

1

Если вы просто хотите захватить идентификаторы, то самым прямым способом является использование именованного параметра.

<input type="checkbox" id="myParams" name="myParams" value="@item.SportId"/> 

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

public ActionResult Create(Advert advert, string[] myParams) 
Смежные вопросы