我正在尝试使用以下代码在asp.net mvc 5应用程序中上传文件。
请参阅cshtml和模型类,并指导我所缺少的内容。始终为HttpPostedFilebase返回null。
cshtml:
<form action="@Url.Action("send-message", "users", new { area = "security" })" class="form-horizontal" method="POST" data-async data-target="#send-message-modal" enctype="multipart/form-data">
<div class="row">
<div class="col-md-12">
@Html.TextBoxFor(m => m.Email, new { placeholder = "Select the recipient...", @class = "form-control form-group-margin" })
@Html.HiddenFor(m => m.RecipientId)
</div>
</div>
@Html.TextBoxFor(m => m.Title, new { placeholder = "Enter a subject", @class = "form-control" })
@Html.ValidationMessageFor(m => m.Title)
@Html.TextAreaFor(m => m.Message, new { placeholder = "Enter your message", @class = "form-control", rows = 5 })
@Html.ValidationMessageFor(m => m.Message)
@Html.TextBoxFor(m => m.FileNew, new { type = "file", @class = "form-control", name= "FileNew" })
<br/>
@Html.ValidationMessageFor(m => m.FileNew)
<div class="panel-footer text-right no-padding-hr no-padding-b">
<button class="btn btn-primary">Send message</button>
</div>
</form>
ViewModel:
public class SendMessageModel
{
[Display(Name = "Recipient")]
[DataType(DataType.EmailAddress)]
[StringLength(255)]
public string Email { get; set; }
[Required]
[Display(Name = "Recipient")]
public int RecipientId { get; set; }
[DataType(DataType.Text)]
[Required]
[Display(Name = "Message")]
public string Message { get; set; }
public bool IsSent { get; set; }
[DataType(DataType.Text)]
[Required]
[Display(Name = "Subject")]
public string Title { get; set; }
public HttpPostedFileBase FileNew { get; set; }
}
Mvc操作:
[ActionName("send-message")]
[HttpPost]
public ActionResult SendMessage(SendMessageModel model)
{
}
答案 0 :(得分:1)
在方法中添加HttpPostedFileBase参数。
public ActionResult SendMessage(SendMessageModel model, HttpPostedFileBase FileNew)
{}
答案 1 :(得分:1)
在“查看”页面中,您可以添加以下代码行
@using(Html.BeginForm("UploadFile","Upload", FormMethod.Post, new {
enctype="multipart/form-data"}))
{
<div>
@Html.TextBox("file", "", new { type= "file"}) <br />
<input type="submit" value="Upload" />
@ViewBag.Message
</div>
}
和控制器
public ActionResult UploadFile(HttpPostedFileBase file, SendMessageModel model)
{
try
{
if (file.ContentLength > 0)
{
string _FileName = Path.GetFileName(file.FileName);
string _path = Path.Combine(Server.MapPath("~/UploadedFiles"), _FileName);
file.SaveAs(_path);
}
ViewBag.Message = "File Uploaded Successfully!!";
return View();
}
catch
{
ViewBag.Message = "File upload failed!!";
return View();
}
}
因此您可以获取文件名,并将在Uploadedfolder中保存您的文件。 希望对您有帮助