C# 模型中的字符串值为空

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; 在视图中输入的上传课程和标题表示为空字符串,我不太清楚这是为什么,如果有任

我正在尝试为上传到我的应用程序的文件创建一个自定义文件名,以便可以轻松查看和下载这些文件。调用控制器上载操作时,我在访问本应存储在模型中的数据时遇到问题,我想知道是否有人可以尝试帮助我,下面是视图、控制器和模型的代码

模型

控制器

看法

当我尝试使用以下命令创建自定义文件名时: 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());