gpt4 book ai didi

forms - 在 MVC4 中上传,在我的操作中有 2 个参数但文件为空

转载 作者:行者123 更新时间:2023-12-04 18:35:37 25 4
gpt4 key购买 nike

我正在尝试将文件上传到目录。以下代码对我有用

Controller

[HttpPost]
public ActionResult Index(HttpPostedFileBase uploadFile)
{
//string path = @"C:\Users\thomas\Desktop";

if (uploadFile != null)
{
string filePath = Path.Combine(Server.MapPath("/files"), Path.GetFileName(uploadFile.FileName));
uploadFile.SaveAs(filePath);
}

return RedirectToAction("Index");
}

HTML 页面

@{
ViewBag.Title = "Index";
}

<h2>Index</h2>
<form action="/Post/Index" method="post" enctype="multipart/form-data">
<label for="uploadFile">Upload file: </label>
<input name="uploadFile" id="uploadFile" type="file" />
<input value="uploadFile" type="submit" />
</form>

现在我试图在一个函数中实现它,在这个函数中我创建了一条消息,该消息是由包含消息和项目类的模型创建的。当我提交表单时,模型被传递到我的 savecontroller 但文件在我的参数 Controller 中为空。

HTML 页面

创建新消息

@model GeoCitytroopers.Models.MessageItemModel
@{
ViewBag.Title = "Create";
}
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
<legend>Event</legend>

<div class="editor-label">
@Html.LabelFor(model => model.Message.MessagePicture)
</div>
<div>
<label for="uploadFile">Upload file: </label>
<input name="uploadFile" id="uploadFile" type="file" />
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Message.MessagePicture)
@Html.ValidationMessageFor(model => model.Message.MessagePicture)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Item.ItemTitle)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Item.ItemTitle)
@Html.ValidationMessageFor(model => model.Item.ItemTitle)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Item.ItemDescription)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Item.ItemDescription)
@Html.ValidationMessageFor(model => model.Item.ItemDescription)
</div>

<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}

<div>
@Html.ActionLink("Back to List", "Index")
</div>

Controller

[HttpPost]
public ActionResult Create(HttpPostedFileBase uploadFile, MessageItemModel ViewModel)
{
if (ModelState.IsValid)
{
Utility ut = new Utility();
Item viewItem = ViewModel.Item;
Message viewMessage = ViewModel.Message;

if (uploadFile != null)
{
string filePath = Path.Combine(Server.MapPath("/files"), Path.GetFileName(uploadFile.FileName));
uploadFile.SaveAs(filePath);
}
//ADD USER TO ITEM
viewItem = ut.AddUserToItem(viewItem);

//ADD ITEM
viewItem.ItemCreateddate = DateTime.Now;


//ADD DISTRICT TO ITEM
viewItem.DistrictID = ut.GetUserDistrict();

db.Items.Add(viewItem);

//ADD LINK
viewMessage.Item = viewItem;
db.Messages.Add(viewMessage);

db.SaveChanges();
return RedirectToAction("Index");
}
return View(ViewModel);
}

如何将上传文件传递到我的 Controller ?提前致谢!

最佳答案

您忘记为表单设置正确的 enctype。没有它你不能上传文件:

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

现在上传开始了,你的 uploadFile 参数不会为 null。

关于forms - 在 MVC4 中上传,在我的操作中有 2 个参数但文件为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14388799/

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