Ваш серверный код выглядит немного запутанным.Я не знаю, является ли это результатом недопонимания или множественных попыток заставить его работать, или как.Но главное, что вы сохраняете образ как на диск сервера , так и в базу данных.Я не вижу причин, чтобы сделать оба.Обычно более эффективно сохранять файл непосредственно на диск и просто записывать путь и имя файла в базу данных, чтобы файл можно было найти позже.
PS Также я не могу понять, почему вы иногда использовали Request.Files["Image"];
, когда файл уже доступен через переменную Image
.И странно удалять расширение из имени файла при сохранении, потому что тогда вы потеряете информацию о том, что это за файл (и вместо этого вы не сохраняете тип MIME).И вы также пытаетесь задать два разных значения для obj.ImageName
в разных строках.Это не имеет смысла.
Так что все, что вам действительно нужно, это, я думаю,
public ActionResult Savedata(HttpPostedFileBase Image)
{
SaveImage obj = new SaveImage();
string result;
if (Image != null)
{
obj.ImageName = Image.FileName;
string imageFolder = "~/DemoImages/";
var path = Path.GetFileNameWithoutExtension(Image.FileName) + DateTime.Now.ToString("ddMMyyhhmmss") + Path.GetExtension(Image.FileName);
result = path.Replace(" ", string.Empty);
var serversavepath = Path.Combine(Server.MapPath(imageFolder) + result);
Image.SaveAs(serversavepath);
obj.ImageName = imageFolder + result;
entity.SaveImages.Add(obj);
entity.SaveChanges();
}
return Content("<script>alert('Data Successfully Submitted');location.href='../Home/Index';</script>");
}
Метод BindGrid будет очень похож, только без поля ImagePic:
public JsonResult BindGrid()
{
DataRow[] result;
var output = (from c in entity.SaveImages.AsEnumerable()
select new
{
ID = c.Id,
ImageName = c.ImageName
}).ToList();
var data = new { result = output };
return Json(output, JsonRequestBehavior.AllowGet);
}
А затем в представлении вам потребуется только следующее для его отображения (поскольку имя папки уже находится в поле ImageName, поэтому это готовый относительный URL-адрес):
<img src="@item.ImageName" width="100" height="100" />