none
asp.net mvc editleme RRS feed

  • Soru

  • bir projem var bir tablo da cover'ı tutuyorum öteki tablo da ise cover içeriklerini tutuyorum ve bunları editlemek istediğimde cover'ı girmek zorunda kalıyorum girmesem databaseden resim adını siliyor.

    kod aşağı da databasedeki cover adını çekip yazmaya çalıştığım zaman ise cover Null uyarısı alıyorum.

     [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Edit(PosterDetails posterDetails, HttpPostedFileBase cover)
            {

                if (cover!=null)
                {
                    string ResimAdi = System.IO.Path.GetFileName(cover.FileName);
                    string adres = Server.MapPath("/Content/images/" + ResimAdi);
                    cover.SaveAs(adres);


                    posterDetails.PosterDetailPath = ResimAdi;
                }

                

                if (ModelState.IsValid)
                {

                    for (int i = 0; i < Request.Files.Count; i++)
                    {
                        var file = Request.Files[i];

                        if (file != null && file.ContentLength > 0)
                        {
                            var fileName = Path.GetFileName(file.FileName);
                            Poster poster = new Poster()
                            {
                                FileName = fileName,
                                PosterPath = Path.GetExtension(fileName),
                                Id = Guid.NewGuid(),
                                PosterDetailsId = posterDetails.PosterDetailsId
                            };
                            var path = Path.Combine(Server.MapPath("~/Content/images/"), poster.Id + poster.PosterPath);
                            file.SaveAs(path);

                            db.Entry(poster).State = EntityState.Added;
                        }
                    }
                   

                    db.Entry(posterDetails).State = EntityState.Modified;
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }

                return View(posterDetails);
            }

    3 Mart 2020 Salı 17:29

Yanıtlar

  • Merhabalar, MVC üzerinde GET-POST işlemlerini farklı action'larda yönettiğimizde karşılaştığımız genel sorun aslında, bu gibi durumlarda hidden inputu kullanarak (resim adı, Id vs..) bilgileri tutabilirsiniz ve Controller'a post edebilirsiniz.

    hidden input'un name alanına Model'deki Property adını vermeniz yeterli olacaktır.


    bir örnek verebilir misiniz acaba

    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()


        <input name="ImageUrl" />
        @Html.HiddenFor(model => model.ImageUrl)
        @Html.Hidden("ImageUrl")


        <div class="form-horizontal">
            <div class="form-group">
                <label>ProductName</label>
                <div class="col-md-10">
                    @Html.EditorFor(model => model.ProductName, new { htmlAttributes = new { @class = "form-control" } })
                </div>
            </div>

            <div class="form-group">
                <labe>Price</labe>
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Price, new { htmlAttributes = new { @class = "form-control" } })
                </div>
            </div>

            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Güncelle" class="btn btn-default" />
                </div>
            </div>
        </div>
    }

    Örnek olarak yukarı 3 adet farklı kullanım ekledim. hangisi işini görürse :) arka tarafta göndermen get ve post ayrı olunca tüm dataları post'ta göndermen veya (post içinde tekrar datayı yakalayıp eksik olan kısımları doldurman gerek) 

    farklı senaryolar üretebiliriz

    4 Mart 2020 Çarşamba 08:57

Tüm Yanıtlar

  • Merhabalar, MVC üzerinde GET-POST işlemlerini farklı action'larda yönettiğimizde karşılaştığımız genel sorun aslında, bu gibi durumlarda hidden inputu kullanarak (resim adı, Id vs..) bilgileri tutabilirsiniz ve Controller'a post edebilirsiniz.

    hidden input'un name alanına Model'deki Property adını vermeniz yeterli olacaktır.


    3 Mart 2020 Salı 17:38
  • Merhabalar, MVC üzerinde GET-POST işlemlerini farklı action'larda yönettiğimizde karşılaştığımız genel sorun aslında, bu gibi durumlarda hidden inputu kullanarak (resim adı, Id vs..) bilgileri tutabilirsiniz ve Controller'a post edebilirsiniz.

    hidden input'un name alanına Model'deki Property adını vermeniz yeterli olacaktır.


    bir örnek verebilir misiniz acaba
    3 Mart 2020 Salı 18:21
  • Merhabalar, MVC üzerinde GET-POST işlemlerini farklı action'larda yönettiğimizde karşılaştığımız genel sorun aslında, bu gibi durumlarda hidden inputu kullanarak (resim adı, Id vs..) bilgileri tutabilirsiniz ve Controller'a post edebilirsiniz.

    hidden input'un name alanına Model'deki Property adını vermeniz yeterli olacaktır.


    bir örnek verebilir misiniz acaba

    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()


        <input name="ImageUrl" />
        @Html.HiddenFor(model => model.ImageUrl)
        @Html.Hidden("ImageUrl")


        <div class="form-horizontal">
            <div class="form-group">
                <label>ProductName</label>
                <div class="col-md-10">
                    @Html.EditorFor(model => model.ProductName, new { htmlAttributes = new { @class = "form-control" } })
                </div>
            </div>

            <div class="form-group">
                <labe>Price</labe>
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Price, new { htmlAttributes = new { @class = "form-control" } })
                </div>
            </div>

            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Güncelle" class="btn btn-default" />
                </div>
            </div>
        </div>
    }

    Örnek olarak yukarı 3 adet farklı kullanım ekledim. hangisi işini görürse :) arka tarafta göndermen get ve post ayrı olunca tüm dataları post'ta göndermen veya (post içinde tekrar datayı yakalayıp eksik olan kısımları doldurman gerek) 

    farklı senaryolar üretebiliriz

    4 Mart 2020 Çarşamba 08:57