.cshtml Page
@model NavRisk.Claims.Central.PresentationLayer.Areas.NavRiskProperty.Models.Property.VehicleImageViewModel
@using NavRisk.Claims.Central.PresentationLayer.Common;
@{
Layout = null;
}
<div class="modal-dialog modal-lg">
<div class="modal-content">
@using (Html.BeginForm("UpdateVehicleImage", "Property", FormMethod.Post, new { enctype = "multipart/form-data", id = "formImageDetail", target = "UploadTargetForImage", }))
{
<div class="modal-header">
<button type="button" class="close" onclick="CloseImageDetailModalDialog();" aria-hidden="true">
<i class="fa fa-times"></i>
</button>
<h4 class="modal-title" id="myModalLabel">Upload Image</h4>
</div>
<div class="modal-body modal-body-scroll-y">
@Html.AntiForgeryToken()
<div class="row">
<div class="col-sm-12">
<div class="form-group no-margin-hr">
<label class="control-label">Image<span style="color: red"><strong>*</strong></span></label>
<input type="file" id="fileImage" name="test" data-required="Y" accept="image/jpg,image/png,image/jpeg,image/gif,image/bmp" />
</div>
</div>
<iframe id="UploadTargetForImage" name="UploadTargetForImage" style="position: absolute; left: -999em; top: -999em;" onload="UploadImage_Complete_Image();"></iframe>
</div>
@Html.HiddenFor(m => m.VehicleDetImgRowID)
@Html.HiddenFor(m => m.VehicleID)
@Html.HiddenFor(m => m.ImageName)
</div>
<div class="modal-footer">
<input type="submit" id="btnSubmit" class="btn btn-success" name="submit" value="Save" onclick="ImageDetailSave();" />
<button id="btnCancelImageDetail" class="btn btn-default" onclick="CloseImageDetailModalDialog();" type="button">Cancel</button>
</div>
}
</div>
</div>
<script>
var formTrackerImage = null;
var SaveClick = false;
$(document).ready(function () {
pageSetUp();
$("#formImageDetail *").filter(':input').not("input[type=hidden]").each(function () {
$(this).attr("onchange", "ImageDetailOnchange(this)");
});
//form change tracking - start
var formTrackerOptions = {
formName: "formImageDetail",
uniqueId: $("#BldgDetImgRowID").val(),
saveMethod: ImageDetailSave
}
formTrackerImage = getFormTackingAdapter(formTrackerOptions);
//form change tracking - end
loading(false);
});
function ImageDetailOnchange(fldEle) {
ValidateElements(fldEle.id);
if (fldEle.id == "fileImage") {
$("#ImageName").val("ss");
}
}
function CloseImageDetailModalDialog() {
if (formTrackerImage != null && formTrackerImage.hasChanges()) {
var saveInvoked = formTrackerImage.confirmSave(); //return;
if (!saveInvoked) {
formTrackerImage.clearSessions($("#BldgDetImgRowID").val());
formTrackerImage = null;
$("#AddImageDialogWindow").modal("hide");
}
}
else {
if (formTrackerImage != null) {
formTrackerImage.clearSessions($("#BldgDetImgRowID").val());
formTrackerImage = null;
}
$("#AddImageDialogWindow").modal("hide");
}
}
function ImageDetailSave() {
SaveClick = true;
var methodArgs = arguments;
if (formTrackerImage != null && !formTrackerImage.hasChanges()) {
//DisplayNotification("There aren\'t any pending changes to save.", "error");
//return;
}
else {
}
}
function UploadImage_Complete_Image() {
if (SaveClick == true)
{
if ($("#ImageName").val() == "")
{
SaveClick = false;
DisplayNotification("There aren\'t any pending changes to save.", "error");
return;
}
else
{
SaveClick = false;
DisplayNotification("Record saved successfully.", "success");
$("#AddImageDialogWindow").modal("hide");
}
}
}
</script>
-----------------------------------------------------------
-----------------------------Controller------------------
[HttpPost]
public ActionResult UpdateVehicleImage(FormCollection formCollection)
{
HttpPostedFileBase file = Request.Files[0];
int vehicleDetImgRowID = int.Parse(Request.Form["VehicleDetImgRowID"]);
int vehicleID = int.Parse(Request.Form["VehicleID"]);
string imageName = Request.Form["ImageName"];
if (file.ContentLength > 0)
{
byte[] Contents = new byte[file.InputStream.Length];
imageName = System.IO.Path.GetFileName(file.FileName);
using (var reader = new System.IO.BinaryReader(file.InputStream))
{
Contents = reader.ReadBytes(file.ContentLength);
}
var vehicleImage = new DomainModel.Property.VehicleImage
{
VehicleDetImgRowID = 0,
VehicleID = vehicleID,
ImageID = vehicleID,
ImgData = Contents,
ImgName = imageName,
ImgPath = ""
};
ViewBag.UpdateStatus = "SUCCESS";
////call put method
var id = _httpClientWrapper.PutAsync(_configProvider.VehicleImageUpdateURL, JsonConvert.SerializeObject(vehicleImage));
return Content(id);
}
else
{
return Content("Error");
}
}
----------------------------------------------------
[HttpGet]
public ActionResult GetVehicleImage(int vehicleID)
{
List<VehicleImage> lstVehicleImage = new List<VehicleImage>();
var url = string.Format("{0}/{1}", _configProvider.VehicleImageListUrl, vehicleID);
var returnValue = _httpClientWrapper.GetStringAsync(url);
lstVehicleImage = JsonConvert.DeserializeObject<List<DomainModel.Property.VehicleImage>>(returnValue).Select(m => new VehicleImage
{
VehicleDetImgRowID = m.VehicleDetImgRowID,
VehicleID = m.VehicleID,
ImageID = m.ImageID,
ImgData = m.ImgData,
ImgName = m.ImgName,
ImgPath = m.ImgPath
}).ToList();
System.Text.StringBuilder sBuilder = new System.Text.StringBuilder();
sBuilder.Append("<ol class='carousel-indicators'>");
for (int i = 0; i < lstVehicleImage.Count; i++)
{
sBuilder.Append("<li data-target='#myCarousel-2' data-slide-to=\"" + i + "\"");
if (i == 0) sBuilder.Append("class='active'");
sBuilder.Append("></li>");
}
sBuilder.Append("</ol>");
sBuilder.Append("<div class='carousel-inner'>");
for (int j = 0; j < lstVehicleImage.Count; j++)
{
sBuilder.Append("<div class='item");
if (j == 0) sBuilder.Append(" active");
sBuilder.Append("'><img src=\"data:image;base64," + System.Convert.ToBase64String(lstVehicleImage[j].ImgData) + "\" alt='' /></div>");
}
sBuilder.Append("</div>");
sBuilder.Append("<a class='left carousel-control' href='#myCarousel-2' data-slide='prev'> <span class='glyphicon glyphicon-chevron-left'></span> </a>");
sBuilder.Append("<a class='right carousel-control' href='#myCarousel-2' data-slide='next'> <span class='glyphicon glyphicon-chevron-right'></span> </a>");
System.Web.UI.LiteralControl lit = new System.Web.UI.LiteralControl();
lit.Text = sBuilder.ToString();
return Content(lit.Text);
}