none
MVC Güncelleme işleminde DropdownListe veri gönderme RRS feed

  • Soru

  • The ViewData item that has the key 'FilmId' is of type 'System.Int32' but must be of type 'IEnumerable<SelectListItem>

    Create ederken sıkıntı yok ama güncelleme işleminde bu hatayı alıyorrum kodllarımı nasıl düzenlemem gerek.

            public async Task<ActionResult> Edit(int Id)
            {
    
                ViewData["Films"] = new SelectList(await db.FilmSet.ToListAsync(), "Id", "FilmName");
                ViewData["Theaters"] = new SelectList(await db.TheaterSet.ToListAsync(), "Id", "TheaterName");
    
    
                return View(await db.TheaterInFilmsSet.FindAsync(Id));
            }
            // POST: Admin/SeanceInFilm/Edit
            [HttpPost]
            public async Task<ActionResult> Edit(TheaterInFilms Model)
            {
    
                
                try
                {
    
                    db.Entry(Model).State = EntityState.Modified;
                    await db.SaveChangesAsync();
                    TempData["message"] = "Seans güncelleme işlemi başarıyla tamamlanmıştır.";
                    return RedirectToAction("Index");
                }
                catch (Exception)
                {
                    return View(Model);
                }
            }
       @Html.DropDownListFor(model => model.Film_Id, ViewData["Films"] as SelectList, "Seçiniz...", new { @class = "form-control" })
      @Html.DropDownListFor(model => model.Theater_Id, ViewData["Theaters"] as SelectList, "Seçiniz...", new { @class = "form-control" })
    



    eneskarakara[at]gmail[nokta]com

    16 Ekim 2016 Pazar 23:26

Yanıtlar

  • Post içerisinde bir hata oluyor ve catch bloğuna düşüyor uygulama. Burada direkt return View(Model); demişsin. Ancak return etmeden önce get methodunda yaptığın gibi ViewData verilerini tekrar doldurman gerekiyor.

    Kodlarını şu şekilde düzeltebilirsin.

    private async Task LoadViewData()
    {
       ViewData["Films"] = new SelectList(await db.FilmSet.ToListAsync(), "Id", "FilmName");
       ViewData["Theaters"] = new SelectList(await db.TheaterSet.ToListAsync(), "Id", "TheaterName");
    }
    public async Task<ActionResult> Edit(int Id)
    {
      await LoadViewData();
      return View(await db.TheaterInFilmsSet.FindAsync(Id));
    }
    // POST: Admin/SeanceInFilm/Edit
    [HttpPost]
    public async Task<ActionResult> Edit(TheaterInFilms Model)
    {
      try
      {
         db.Entry(Model).State = EntityState.Modified;
         await db.SaveChangesAsync();
         TempData["message"] = "Seans güncelleme işlemi başarıyla tamamlanmıştır.";
         return RedirectToAction("Index");
      }
      catch (Exception)
      {
         await LoadViewData();
         return View(Model);
      }
    }


    oguzkurtcuoglu.com


    17 Ekim 2016 Pazartesi 05:53

Tüm Yanıtlar

  • Post içerisinde bir hata oluyor ve catch bloğuna düşüyor uygulama. Burada direkt return View(Model); demişsin. Ancak return etmeden önce get methodunda yaptığın gibi ViewData verilerini tekrar doldurman gerekiyor.

    Kodlarını şu şekilde düzeltebilirsin.

    private async Task LoadViewData()
    {
       ViewData["Films"] = new SelectList(await db.FilmSet.ToListAsync(), "Id", "FilmName");
       ViewData["Theaters"] = new SelectList(await db.TheaterSet.ToListAsync(), "Id", "TheaterName");
    }
    public async Task<ActionResult> Edit(int Id)
    {
      await LoadViewData();
      return View(await db.TheaterInFilmsSet.FindAsync(Id));
    }
    // POST: Admin/SeanceInFilm/Edit
    [HttpPost]
    public async Task<ActionResult> Edit(TheaterInFilms Model)
    {
      try
      {
         db.Entry(Model).State = EntityState.Modified;
         await db.SaveChangesAsync();
         TempData["message"] = "Seans güncelleme işlemi başarıyla tamamlanmıştır.";
         return RedirectToAction("Index");
      }
      catch (Exception)
      {
         await LoadViewData();
         return View(Model);
      }
    }


    oguzkurtcuoglu.com


    17 Ekim 2016 Pazartesi 05:53
  • Çok teşekkürler. 

    eneskarakara[at]gmail[nokta]com

    18 Ekim 2016 Salı 10:49