Не можете отправить форму, если одна из двух кнопок загрузки не имеет вложения в asp.net C #? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть базовое приложение asp.net c #, которое имеет форму для отправки некоторых данных в базу данных. Эта форма имеет две кнопки загрузки для загрузки двух файлов.

Теперь, когда я загружаю оба файла и отправляю форму, она работает правильно. И всякий раз, когда я отправляю форму, не загружая ни одного файла (без какого-либо файла), она также работает правильно.

Но проблема в том, что когда я загружаю только один файл с помощью одной из кнопок загрузки, а другую кнопку загрузки оставляю пустым (без какого-либо файла или вложения), а затем отправляю форму, возникает ошибка как [Ссылка на объект не установить экземпляр объекта].

Я думаю, что проблема в логике блока if () в моем контроллере, кстати, я пробовал другую логику, но она не работает.

Это модель:

  public class Events
{
    public int Id { get; set; }
    public string title { get; set; }
    public string amount { get; set; }
    public string Finance_Approval { get; set; }


    public string file_one { get; set; }
    [NotMapped]
    public HttpPostedFileBase file1 { get; set; }

    public string file_two { get; set; }
    [NotMapped]
    public HttpPostedFileBase file2 { get; set; }


}

Это контроллер:

     public ActionResult Index()
    {

        return View();
    }

    public ActionResult Request(Events e)
    {


        if ((e.file1!=null && e.file1.ContentLength>0) || (e.file2!=null && e.file2.ContentLength>0))
        {

            string filename = Path.GetFileNameWithoutExtension(e.file1.FileName);
            string extension = Path.GetExtension(e.file1.FileName);
            filename = filename + DateTime.Now.ToString("yymmssfff") + extension;
            e.file_one = "PM_Files/" + filename;
            filename = Path.Combine(Server.MapPath("~/PM_Files/"), filename);
            e.file1.SaveAs(filename);

            string Second_filename = Path.GetFileNameWithoutExtension(e.file2.FileName);
            string Second_extension = Path.GetExtension(e.file2.FileName);
            Second_filename = Second_filename + DateTime.Now.ToString("yymmssfff") + Second_extension;
            e.file_two = "PM_Files/" + Second_filename;
            Second_filename = Path.Combine(Server.MapPath("~/PM_Files/"), Second_filename);
            e.file2.SaveAs(Second_filename);

            _context.evt.Add(e);
            _context.SaveChanges();

            return Content("Added");
        }


        else
        {


            _context.evt.Add(e);
            _context.SaveChanges();

            return Content("Added");


        }

    }

А это бритва:

 @using (Html.BeginForm("Request", "Requester", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="form-group">
    @Html.LabelFor(a => a.title)
    @Html.TextBoxFor(a => a.title, new { @class = "form-control" })
</div>
<div class="form-group">
    @Html.LabelFor(a => a.amount)
    @Html.TextBoxFor(a => a.amount, new { @class = "form-control" })
</div>


<div class="form-group">
    <label>Select the file word or pdf etc</label>
    <input type="file" name="file1" />
</div>

<div class="form-group">
    <label>Select the file word or pdf etc</label>
    <input type="file" name="file2" />
</div>
<br/>


<button class="btn btn-primary">Request</button>
}

1 Ответ

0 голосов
/ 14 ноября 2018

Вам необходимо проверить, является ли file1 или file2 нулевым или нет, и зависит от того, можете ли вы сохранить эти файлы.

Попробуйте изменить свой код как

public ActionResult Request(Events e)
    {
        //Check whether "e" is null or not
        if (e != null)
        {
            //Check whether "file1" is null or not
            if (e.file1 != null && e.file1.ContentLength > 0)
            {
                string filename = Path.GetFileNameWithoutExtension(e.file1.FileName);
                string extension = Path.GetExtension(e.file1.FileName);
                filename = filename + DateTime.Now.ToString("yymmssfff") + extension;
                e.file_one = "PM_Files/" + filename;
                filename = Path.Combine(Server.MapPath("~/PM_Files/"), filename);
                e.file1.SaveAs(filename);
            }

            //Check whether "file2" is null or not
            if (e.file2 != null && e.file2.ContentLength > 0)
            {
                string Second_filename = Path.GetFileNameWithoutExtension(e.file2.FileName);
                string Second_extension = Path.GetExtension(e.file2.FileName);
                Second_filename = Second_filename + DateTime.Now.ToString("yymmssfff") + Second_extension;
                e.file_two = "PM_Files/" + Second_filename;
                Second_filename = Path.Combine(Server.MapPath("~/PM_Files/"), Second_filename);
                e.file2.SaveAs(Second_filename);
            }

            _context.evt.Add(e);
            _context.SaveChanges();

            return Content("Added");
        }
        else
        {
            return Content("Event is empty");
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...