C# 模型中的字符串值为空
我正在尝试为上传到我的应用程序的文件创建一个自定义文件名,以便可以轻松查看和下载这些文件。调用控制器上载操作时,我在访问本应存储在模型中的数据时遇到问题,我想知道是否有人可以尝试帮助我,下面是视图、控制器和模型的代码 模型 控制器 看法 当我尝试使用以下命令创建自定义文件名时: string newfilename=Path.GetFileNametesting.Title+-+testing.Course+.+pdf;C# 模型中的字符串值为空,c#,html,asp.net-mvc,asp.net-mvc-5,C#,Html,Asp.net Mvc,Asp.net Mvc 5,我正在尝试为上传到我的应用程序的文件创建一个自定义文件名,以便可以轻松查看和下载这些文件。调用控制器上载操作时,我在访问本应存储在模型中的数据时遇到问题,我想知道是否有人可以尝试帮助我,下面是视图、控制器和模型的代码 模型 控制器 看法 当我尝试使用以下命令创建自定义文件名时: string newfilename=Path.GetFileNametesting.Title+-+testing.Course+.+pdf; 在视图中输入的上传课程和标题表示为空字符串,我不太清楚这是为什么,如果有任
在视图中输入的上传课程和标题表示为空字符串,我不太清楚这是为什么,如果有任何帮助,我将不胜感激。没有任何东西可以作为这两个属性为空的明显原因。然而,这里的代码有很多地方出错,所以也许修复这些错误也会解决这个问题 您正在使用没有参数的Html.BeginForm。为了上传文件,表单必须具有enctype=multipart/form数据。这将需要:
@using (Html.BeginForm("Action", "Controller", null, FormMethod.Post, new { enctype = "multipart/form-data" }))
或者,您可以直接使用表单标记:
<form action="" method="post" enctype="multipart/form-data">
然后,您可以直接在模型上使用此属性,而无需深入研究Request.Files
您正在数据中添加文件上载,但未添加标题和课程的值
您必须在文件中附加标题和课程的值谢谢您的输入!我的代码目前可以很好地上传带有原始文件名的文件,但我会采纳你的建议!好吧,这是一个巧妙的技巧,因为没有enctype,文件根本不会被上传……不管怎样,“上传”的文件出现在App_Data/uploads文件中,我也能够下载它们,因此我相信它是有效的,但显然它们没有被正确上传。我将根据您对视图模型和enctype的反馈开始新的实现,谢谢您指出。您是上载单个文件还是多个文件?@Usman single files,每次上传一个文件到App_Data/uploads我认为当选择并上传多个文件时,你的方法会导致问题,因为即使你尝试上传单个文件,也会得到其他文件。如果你想上传单个文件而不在表格中,那么Chris Pratt的回答是好的,你可以制作一篇ajax文章,但不发送任何标题或标题值请求中的进程,因此它们为空。只需使用var formdata=new formdata$'form'.get0;要序列化所有表单控件,请参阅以了解更多详细信息
@using Project.Models;
@using Project.Controllers
@model UploadModel
@{
ViewBag.Title = "Upload";
Layout = "~/Views/Shared/_Layout.cshtml";
var courses = ForumController.checkCourseList;
}
<link href="~/Content/sweetalert.css" rel="stylesheet" />
<h2>Upload Content</h2>
@section scripts {
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Content/sweetalert.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script>
$(document).ready(function () {
$('#btnUploadFile').click(function () {
var data = new FormData();
var files = $("#fileUpload").get(0).files;
if (files.length > 0) {
data.append("UploadedFile", files[0]);
}
var ajaxRequest = $.ajax({
type: "POST",
url: "File/Index",
contentType: false,
processData: false,
success: function () {
swal({
type: "success",
title: "Uploaded",
text: "The file has been uploaded",
timer: 2000,
showConfirmButton: false
});
},
error: function () {
swal({
type: "error",
title: "Error",
text: "Something went wrong, please try again!",
timer: 2000,
showConfirmButton: false
});
},
data: data
});
ajaxRequest.done(function (xhr, textStatus) {
});
});
});
</script>
}
@using (Html.BeginForm())
{
<div class="uploadContainer">
<table>
<tr>
<td>Title :</td>
<td colspan="2" class="editUploadTitle">
@Html.TextBoxFor(m => m.Title, new { @class = "uploadTitleInp" })
@Html.ValidationMessageFor(m => m.Title)
</td>
</tr>
<tr>
<td>Course :</td>
<td>
@{
List<SelectListItem> listItems = new List<SelectListItem>();
foreach (var course in courses)
{
listItems.Add(new SelectListItem
{
Text = course .Courses.Name,
Value = course .Courses.Name
});
}
}
@Html.DropDownListFor(m => m.Course, listItems, "-- Select Course--")
@Html.ValidationMessageFor(m => m.Course)
</td>
</tr>
<tr>
<td>File :</td>
<td>
<input type="file" name="FileUpload1" id="fileUpload" required />
</td>
</tr>
<tr>
<td></td>
<td>
<input id="btnUploadFile" type="button" value="Upload File" />
</td>
</tr>
</table>
</div>
}
@Html.ActionLink("View Uploads", "Downloads")
@using (Html.BeginForm("Action", "Controller", null, FormMethod.Post, new { enctype = "multipart/form-data" }))
<form action="" method="post" enctype="multipart/form-data">
[DataType(DataType.Upload)]
public HttpPostedFileBase FileUpload { get; set; }
var data = new FormData();
var files = $("#fileUpload").get(0).files;
if (files.length > 0) {
data.append("UploadedFile", files[0]);
}
data.append("Title", $('#Title').val());
data.append("Course", $('#Course').val());