我的ASP.NET MVC应用程序中有一个联系表单,效果非常好。我使用带有sendgrid的SMTPClient。
我决定尝试将文件上传到我的联系表单,然后我就可以选择一张图片并且电子邮件发送正常。唯一的问题是,当我发送电子邮件(对我自己,当然)时,根本没有文件附件。此外,在我的控制器中,我添加了一个检查以查看对象是否为空 - 它是。我不知道为什么。有人能帮忙吗?
我的观点:
@using (@Html.BeginForm("Contact", "Views", FormMethod.Post, new { @class = "form-signin", @action = "Contact", @method = "post", enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
HtmlHelper.UnobtrusiveJavaScriptEnabled = true;
// other fields
@Html.TextBoxFor(m => m.fileUploader, new { type = "file" })
}
视图模型:
public HttpPostedFileBase fileUploader { get; set; }
控制器:
[HttpPost]
public ActionResult Index(ContactFormViewModel model, HttpPostedFileBase fileUploader)
{
if (ModelState.IsValid)
{
MailMessage msz = new MailMessage();
msz.From = new MailAddress(model.InputEmail);
msz.To.Add("myemail@email.com");
msz.Subject = "subject";
msz.Body = "body stuff";
msz.IsBodyHtml = true;
if (fileUploader != null) //THIS IS NULL??
{
string fileName = Path.GetFileName(fileUploader.FileName);
msz.Attachments.Add(new Attachment(fileUploader.InputStream, fileName));
}
//SMPTCLient stuff
ModelState.Clear();
return View("Success");
}
在我看来,好像所选的文件没有被映射,但我不知道如何或为什么。正如我在代码中所说,我在控制器上放了一个断点,fileuploader
为空。
其他一切都很好,模型中的其他字段都有价值,但不是这个。
当我收到我的电子邮件时,所有字段都在那里,但没有附加到电子邮件。
我错过了什么吗?