У меня есть базовое приложение 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>
}