gpt4 book ai didi

c# - 使用局部 View MVC 5 上传文件

转载 作者:行者123 更新时间:2023-11-30 14:26:37 27 4
gpt4 key购买 nike

我正在尝试通过我的 MVC 5 应用程序中的 Html-Helper 表单上传一个数字和一个文件。提交模型后,我的 View 模型中的 model.File 属性似乎总是​​返回 null

在添加 model.File != null 检查之前,我的应用程序抛出一个 NullReferenceException

我的表单逻辑包含在名为 UploadFile.cshtml 的部分 View 中,因为我的表单逻辑需要与 index.cshtml 不同的模型。

如何从我的 [HttpPost] Controller 操作中的表单读取 File 属性?

索引.cshtml

@Html.Action("UploadFile", "Home")

上传文件.cshtml

@model FileViewModel

@using (Html.BeginForm("FormUpload", "Home", FormMethod.Post))
{
<div class="form-group">
@Html.TextBoxFor(m => m.Marker)
</div>
<div class="form-group">
@Html.TextBoxFor(m => m.File, new { type = "file" })
</div>
<input type="submit" name="submit" value="Submit" />
}

家庭 Controller

    public PartialViewResult UploadFile()
{
return PartialView("UploadFile", new FileViewModel());
}

// /Home/FormUpload
[HttpPost]
public ActionResult FormUpload(FileViewModel model)
{
if (ModelState.IsValid)
{
if (model.File != null && model.File.ContentLength > 0 && model.File.ContentType == "application/pdf")
{
// Convert file to byte[] and upload
// ...
ViewBag.Message = "File Uploaded Successfully";
}
else
{
ViewBag.Message = "File Not Uploaded";
}
}
return RedirectToAction("Index");
}

文件 View 模型

public class FileViewModel
{
public int ID { get; set; }
public int Marker { get; set; }
public string Filename { get; set; }
public HttpPostedFileBase File { get; set; }
}

最佳答案

您缺少表单的 enctype 属性,您需要为文件大小写指定该属性:

@using (Html.BeginForm("FormUpload", "Home", 
FormMethod.Post,
new { enctype = "multipart/form-data" }))

参见 this article了解更多详情。

关于c# - 使用局部 View MVC 5 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34861233/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com