En iyi yanıtlayıcılar
asp.net mvc editleme

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);
}
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
- Yanıt Olarak İşaretleyen Kyamuran SalibryamMicrosoft contingent staff, Moderator 6 Mart 2020 Cuma 11:47
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.
- Düzenleyen MuratVuranok 3 Mart 2020 Salı 17:50 edit
- Yanıt Olarak Öneren Önay YALÇINERModerator 4 Mart 2020 Çarşamba 14:12
-
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.
-
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
- Yanıt Olarak İşaretleyen Kyamuran SalibryamMicrosoft contingent staff, Moderator 6 Mart 2020 Cuma 11:47