【发布时间】:2017-09-15 16:22:45
【问题描述】:
我正在尝试从视图发送数据并在控制器中使用它来为我正在处理的上传文件功能构造一个文件名,我的代码如下。
控制器
// GET: File
[Authorize(Roles = "Admin, Lecturer")]
public ActionResult Index()
{
foreach (string upload in Request.Files)
{
if (Request.Files[upload].FileName != "")
{
string path = AppDomain.CurrentDomain.BaseDirectory + "/App_Data/uploads/";
string filename = Path.GetFileName(Request.Files[upload].FileName);
Request.Files[upload].SaveAs(Path.Combine(path, filename));
}
}
return View();
}
型号
public class UploadModel
{
[Required(ErrorMessage = "Course is required")]
public string Course { get; set; }
[Required(ErrorMessage = "Title is required")]
public string Title { get; set; }
public string Uploader { get; set; }
}
查看
<div class="uploadContainer">
<table>
<tr>
<td>Title :</td>
<td colspan="2" class="editPostTitle">
@Html.TextBoxFor(tuple => tuple.Item1.Title, new { @class = "uploadTitleInp" })
@Html.ValidationMessageFor(tuple => tuple.Item1.Title)
</td>
</tr>
<tr>
<td>Course :</td>
<td>
@{
List<SelectListItem> listItems = new List<SelectListItem>();
foreach (var cat in courses)
{
listItems.Add(new SelectListItem
{
Text = cat.Course.Name,
Value = cat.Course.Name
});
}
}
@Html.DropDownListFor(tuple => tuple.Item1.Course, listItems, "-- Select Status --")
@Html.ValidationMessageFor(tuple => tuple.Item1.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>
此方法负责将上传的文件放置到目录中。我想要做的是通过做这样的事情来创建一个文件名。
string filename = model.Title + " - " + model.Course;
我通常知道如何在使用 db 存储数据时实现这一点,但由于我不存储上传到 db 中的文件,所以我真的不知道如何将模型数据传递给控制器,所以我可以使用用户输入的值来构造文件名。我对这个框架和语言比较陌生,所以任何帮助和指针都会非常有用。
提前致谢!
【问题讨论】:
-
看看这个:stackoverflow.com/questions/16339398/… 它帮助了我
标签: c# asp.net-mvc razor asp.net-mvc-5