#ajax #asp.net-core #file-upload #bootstrap-modal #asp.net-ajax
#ajax #asp.net-ядро #загрузка файла #bootstrap-модальный #asp.net-ajax
Вопрос:
Я хочу загрузить файл и отправить его по электронной почте. Но я не вижу, как это сделать с помощью Bootsrap Modal.
Если вам нужна какая-либо другая информация, скажите мне.
Я хотел бы отправить прикрепленный файл по электронной почте, а затем интегрировать его в свою базу данных и иметь возможность загружать его.
/[…] / ==> Код, который я не добавлял, бесполезен.
Редактировать: иначе как поступить с Ajax?
Мое мнение :
<form name="contact" method="post" asp-action="Validation">
@if (ViewBag.Alert != null amp;amp; ViewBag.Alert != "")
{
<div class="alert role="alert">
@ViewBag.Alert
</div>
}
<div class="details">
<h3 class="title">Demande</h3>
<label for="card">Type *</label>
<select required onchange="contact()" class=" form-control" disabled="true" name="type" value="@ViewBag.Form.Type">
<option value="1">Choose 1</option>
<option value="2">Choose 2</option>
</select>
<label for="card">Origine *</label>
<select required class="form-control" name="origine" value="@ViewBag.Form.Origine">
<option value="1">Origine 1</option>
<option value="2">Origine 2</option>
<option value="3">Origine 3</option>
</select>
/*[...]*/
<input type="hidden" name="Id" value="@ViewBag.Form.Id" />
<input type="hidden" name="Price" value="@ViewBag.Form.Price" />
/*[...]*/
<textarea class="form-control" name="Response" placeholder="Response..."></textarea>
<button required class="btn" onclick="modal_response()" data-whatever="getbootstrap" data-toggle="modal" data-target="#modal_contact" type="button">Response</button>
<label for="card" class="right">Response send</label><br />
<button required class="btn_second" onclick="modal_save()" data-whatever="getbootstrap" data-toggle="modal" data-target="#modal_contact_save" type="button">Save</button>
<label for="card-holder" class="right">Save Ok!</label>
/*[...]*/
<div class="form-row">
<button class="btn-primary" onclick="form_confirmation()" type="submit">Save All</button>
<button class="btn-secondary" type="reset" onclick="location.href = '@Url.Action("List", "Control", new { id = ViewBag.Id })';">Close</button>
</div>
</div>
</form>
/* When I click on "Response" a new window open */
<div class="modal fade" id="modal_contact" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<h5 class="modal-title" id="modal_label">Send email to : @ViewBag.Form.Name</h5>
<button type="button" class="close" data-dismiss="modal"></button>
</div>
<div class="modal-body">
<form id="modal_contact_form" enctype = "multipart/form-data" method="post" action="@Url.Action("Modal_contact", "Control")">
<div class="form-group">
<input type="file" name="file" accept="application/pdf" /><br /><br />
<textarea class="form-control" name="Description" required placeholder="Content">@ViewBag.Response</textarea>
</div>
<input type="hidden" name="Id" value="ID" hidden />
<input type="hidden" name="Price" value="@ViewBag.Form.Price" hidden />
<input type="hidden" name="Type" value="@ViewBag.Form.Type" hidden />
/*[...]*/
<input type="submit" hidden />
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" data-dismiss="modal" onclick="$('#modal_contact_form').submit();" class="btn-primary">Send Email</button>
</div>
</div>
Мой контроллер :
public class MyController : BaseEntity
{
[Required]
public string Id { get; set; }
public string Price { get; set; }
public string Type { get; set; }
/*[...]*/
/* For File I don't know if it's good?? */
public IformFile File { get; set; }
}
Моя модель :
public ActionResult Modal_contact(MyController model)
{
/* How to retrieve file ?? */
bool ok = false;
OtherController OC = new OtherController();
/*[...]*/
if (ModelState.IsValid)
{
OC = othercontrollerRepository.Find(model.Id);
OC.Email = this.Session_get("Email");
OC.Description = "";
model.Email = this.Session_get("Email");
model.Status = "1";
model.View = "response";
/*[...]*/
if (mycontrollerRepository.Add(model) amp;amp; othercontrollerRepository.Update(OC))
{
/* How to send file to email and save file to folder in my project to add in my database ? */
MailManager mail = new MailManager();
Modele modele = new Modele();
modele= modeleRepository.Find("response");
ok = mail.send(modele.Objet, model.Description, OC.Email);
}
return Json(new { Json_result = ok, Redirect = "" });
}
return Json(new { Json_result = false, Redirect = "" });
}
Я нашел свою ошибку:
Form
перед <div>
Ответ №1:
Я попробовал ваш код и воспроизвел вашу проблему. Я заметил, что вы назвали объект IFormFile как File .
public IFormFile File { get; set; }
Но входной файл, который вы получаете, называется file .
<input type="file" name="file" accept="application/pdf"/><br /><br />
Asp.net привязка базовой модели свяжет свойство в соответствии с входным именем. Именно по этой причине вы не смогли получить значение IFormFile в контроллере.
Чтобы решить эту проблему, вы должны изменить имя входных данных на File, чтобы они могли совпадать друг с другом.
Как показано ниже:
<input type="file" name="File" accept="application/pdf"/><br /><br />
Результат:
Комментарии:
1. Спасибо за ваш ответ, но я использовал Boostrap Modal, и с этим он не работает…
2. Не могли бы вы, пожалуйста, сказать мне, что вы имеете в виду, когда не работает? Вы не смогли получить действие
File
в контроллере?3. Точно, я не смог получить действие
File
в контроллере! И это связано с использованием Boostrap Modal