просто извините за вопрос, потому что есть тонны информации относительно загрузки изображений с использованием MVC и SQL-сервера, но дело в том, что у меня есть эта проблема в течение 3 дней, и я не смог найти ничего конкретного.
У меня есть проект MVC с представлением «Правка» и возможностью загрузить и отобразить изображение, проблема в том, что когда вы сохраняете изменения, создается новая строка в моей таблице с загруженным изображением и изображением из строки выбранное пропало, но я хочу переопределить существующее изображение в строке, выбранной с загруженным новым (в основном редактируйте всю строку, включая изображение, вместо того, чтобы возиться с новыми строками). Я думаю, проблема в моем контроллере, но каждый раз, когда я пытаюсь что-то новое, просто не работает. Спасибо!
HomeController:
public JsonResult ImageUpload(ImageViewModel model)
{
ImageDatabaseEntities6 db = new ImageDatabaseEntities6();
int imgId = 0;
var file = model.ImageFile;
byte[] imagebyte = null;
if (file != null)
{
file.SaveAs(Server.MapPath("/UploadImage/" + file.FileName));
BinaryReader reader = new BinaryReader(file.InputStream);
imagebyte = reader.ReadBytes(file.ContentLength);
imageData img = new imageData();
img.ImageTitle = file.FileName;
img.ImageByte = imagebyte;
img.ImagePath = "/UploadImage/" + file.FileName;
db.imageDatas.Add(img);
db.SaveChanges();
imgId = img.ImageId;
}
return Json(jobs, JsonRequestBehavior.AllowGet);
}
public ActionResult DisplayingImage(int imgid)
{
ImageDatabaseEntities6 db = new ImageDatabaseEntities6();
var img = db.imageDatas.SingleOrDefault(x => x.ImageId == imgid);
return File(img.ImageByte, "image/jpg");
}
public ActionResult Edit(int? ImageId)
{
if (ImageId == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
imageData jobs = db.imageDatas.Find(ImageId);
if (jobs == null)
{
return HttpNotFound();
}
return View(jobs);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(imageData jobs)
{
if (ModelState.IsValid)
{
db.Entry(jobs).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(jobs);
}
Редактировать вид:
@model JobsManagerApp.Models.imageData
@{
ViewBag.Title = "Edit";
}
<img src="@Url.Content(Model.ImagePath)" height="140" />
<div class="container">
<div class="col-md-4">
<input type="file" id="SelectImage" /><br />
<a href="#" class="btn btn-sm btn-danger" onclick="UploadImage()">Upload</a>
</div>
<div class="col-md-4 thumbnail" id="UploadedImage"></div>
</div>
<br /><br />
<h2>Edit</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<dl class="dl-horizontal">
<dt>
@Html.DisplayName("Type of Job")
</dt>
<dd>
@Html.EditorFor(model => model.TypeOfJob)
</dd>
<dt>
@Html.DisplayName("Tools Needed")
</dt>
<dd>
@Html.EditorFor(model => model.ToolsNeeded)
</dd>
<dt>
@Html.DisplayName("Profit")
</dt>
<dd>
@Html.EditorFor(model => model.Profit)
</dd>
<dt>
@Html.DisplayName("Expenses less than five miles")
</dt>
<dd>
@Html.EditorFor(model => model.ExpensesLessThanFiveMiles)
</dd>
<dt>
@Html.DisplayName("Expenses less than ten miles")
</dt>
<dd>
@Html.EditorFor(model => model.ExpenseslessThanTenMiles)
</dd>
<dt>
@Html.DisplayName("Expenses less than twenty miles")
</dt>
<dd>
@Html.EditorFor(model => model.ExpensesLessThanTwentyMiles)
</dd>
<dt>
@Html.DisplayName("Expenses less than thirty miles")
</dt>
<dd>
@Html.EditorFor(model => model.ExpensesLessThanThirtyMiles)
</dd>
<dt>
@Html.DisplayName("Materials")
</dt>
<dd>
@Html.EditorFor(model => model.Materials)
</dd>
<dt>
@Html.DisplayName("Estimate duration")
</dt>
<dd>
@Html.EditorFor(model => model.EstimateDuration)
</dd>
<dt>
@Html.DisplayName("Number of employees")
</dt>
<dd>
@Html.EditorFor(m => m.EstimateNofEmployees)
</dd>
</dl>
<input type="submit" value="Save Changes" />
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
var UploadImage = function () {
var file = $("#SelectImage").get(0).files;
var data = new FormData;
data.append("ImageFile", file[0]);
$.ajax({
type: "POST",
url: "/Home/ImageUpload",
data: data,
contentType: false,
processData: false,
success: function (imgID) {
$("#UploadedImage").append('<img src="/Home/DisplayingImage?imgID=' + imgID + '"class=img-responsive thimbnail"/>');
}
})
}
</script>
}
@Html.ActionLink("Back to List", "Index")enter code here