Получение одинакового изображения из трех элементов управления загрузкой в одном представлении MVC

#c# #asp.net-mvc #asp.net-mvc-4

#c# #asp.net-mvc #asp.net-mvc-4

Вопрос:

У меня есть три элемента управления загрузкой файлов, все принимают один файл, но когда я получаю представление, все сохраняются как одно и то же изображение в моей папке с изображениями —

моя модель приведена ниже, в модели я взял три переменные типа HttpPostedFileBase и три переменные метки:

  [NotMapped]
    [DisplayName("Upload Image")]
    public string ImagePath { get; set; }
    [NotMapped]
    public HttpPostedFileBase ImageFile { get; set; }

    [NotMapped]
    [DisplayName("Upload Aadhaar Card")]
    public string AadhaarPathL { get; set; }
    [NotMapped]
    public HttpPostedFileBase AadhaarFile{get;set;}
    [NotMapped]
    [DisplayName("Upload PAN Card")]
    public string   PanPathL           { get; set; }
    [NotMapped]
    public HttpPostedFileBase PanFile { get; set; }
  

В представлении я объявил тип файла text bos для загрузки изображения :

  @using (Html.BeginForm("CreateVendor", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div style="margin-left:70px;">
    @Html.AntiForgeryToken()
     <div class="row">
        <div class="col-md-6">

            <div class="form-group">
                @Html.LabelFor(model => model.ImagePath)
                @Html.TextBoxFor(model => model.ImageFile, new { type = "file", name = "ImageFile", id = "ImageFile",@class= "form-control" })
                @Html.ValidationMessageFor(model => model.ImagePath, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
                @Html.LabelFor(model => model.AadhaarPathL)
                @Html.TextBoxFor(m => m.AadhaarFile,new { type = "file", name = "AadhaarFile", id = "AadhaarFile", @class = "form-control" })
                @Html.ValidationMessageFor(model => model.AadhaarPathL, "", new { @class = "text-danger" })
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-6">
            <div class="form-group">
                @Html.LabelFor(model => model.PanPathL)
                @Html.TextBoxFor(m => m.PanFile, new { type = "file", name = "PanFile", id = "PanFile", @class = "form-control" })
                @Html.ValidationMessageFor(model => model.PanPathL, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
                @* Empty  *@
            </div>
        </div>
    </div>
    </div>
}
  

И, наконец, в View code я получаю один за другим как uri, так и изображение, но каждый раз я получаю сохраненное одно и то же изображение для каждого изображения. я застрял здесь

     [HttpPost]
        public ActionResult CreateVendor(VendorList vendorList)
        {
 #region Photo Image 
                string fileName = Path.GetFileNameWithoutExtension(vendorList.ImageFile.FileName);
                string extension = Path.GetExtension(vendorList.ImageFile.FileName);
                fileName = fileName   "Photo"   DateTime.Now.ToString("yymmssfff")   extension;

                var uri = string.Format("{0}://{1}{2}{3}",
                 System.Web.HttpContext.Current.Request.Url.Scheme,
                 System.Web.HttpContext.Current.Request.Url.Host,
                 System.Web.HttpContext.Current.Request.Url.Port == 80 ? string.Empty : ":"   System.Web.HttpContext.Current.Request.Url.Port,
                 "/Image/"   fileName);

                vendorList.ImagePath = "~/Image/"   fileName;

                fileName = Path.Combine(Server.MapPath("~/Image/"), fileName);
                vendorList.ImageFile.SaveAs(fileName);
                vendorList.PhotoPath = fileName;

                vendorList.PhotoUrl = uri;
                #endregion
                #region Aadhaar Image 
                string fileAadhaarName = Path.GetFileNameWithoutExtension(vendorList.AadhaarFile.FileName);
                string extensionAadhaar = Path.GetExtension(vendorList.AadhaarFile.FileName);
                fileAadhaarName = fileAadhaarName   vendorList.Email   "Aadhaar"   DateTime.Now.ToString("yymmssfff")   extensionAadhaar;

                var uriAadhaar = string.Format("{0}://{1}{2}{3}",
                 System.Web.HttpContext.Current.Request.Url.Scheme,
                 System.Web.HttpContext.Current.Request.Url.Host,
                 System.Web.HttpContext.Current.Request.Url.Port == 80 ? string.Empty : ":"   System.Web.HttpContext.Current.Request.Url.Port,
                 "/Image/"   fileAadhaarName);

                vendorList.AadhaarPathL = "~/Image/"   fileAadhaarName;

                fileAadhaarName = Path.Combine(Server.MapPath("~/Image/"), fileAadhaarName);
                vendorList.ImageFile.SaveAs(fileAadhaarName);
                vendorList.AadhaarPath = fileAadhaarName;

                vendorList.AadhaarUrl = uriAadhaar;
                #endregion
                #region Pan Image 
                string filePanName = Path.GetFileNameWithoutExtension(vendorList.PanFile.FileName);
                string extensionPan = Path.GetExtension(vendorList.PanFile.FileName);
                filePanName = filePanName   vendorList.Email   "Pan"   DateTime.Now.ToString("yymmssfff")   extensionPan;

                var uriPan = string.Format("{0}://{1}{2}{3}",
                 System.Web.HttpContext.Current.Request.Url.Scheme,
                 System.Web.HttpContext.Current.Request.Url.Host,
                 System.Web.HttpContext.Current.Request.Url.Port == 80 ? string.Empty : ":"   System.Web.HttpContext.Current.Request.Url.Port,
                 "/Image/"   filePanName);

                vendorList.PanPathL = "~/Image/"   filePanName;

                filePanName = Path.Combine(Server.MapPath("~/Image/"), filePanName);
                vendorList.ImageFile.SaveAs(filePanName);
                vendorList.PanPath = filePanName;

                vendorList.PanUrl = uriPan;

}
  

Может кто-нибудь подсказать, что здесь происходит.

Комментарии:

1. Просто предложение: вместо того, чтобы объявлять 3 HttpPostedFileBase свойства по отдельности, вы можете использовать одно List<HttpPostedFileBase> свойство и использовать multiple настройку при вводе файла, тогда вы можете ограничить загружаемые файлы максимум 3 файлами.

2. @TetsuyaYamamoto, спасибо за предложение, но моя проблема в том, как я буду определять, какое изображение для какого поля