首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Iformfile非法调用&空值

Iformfile非法调用&空值
EN

Stack Overflow用户
提问于 2021-12-30 01:10:04
回答 1查看 260关注 0票数 0

我目前正在同一个ASP.NET核心项目中开发Web和MVC。我想上传一个文件。但是我被困在前端,因为数据只是空的或非法的调用

代码语言:javascript
复制
<form class="needs-validation" enctype="multipart/form-data"  novalidate>
    <input class="file-upload" type="file" name="file" size="40" accept=".png, .jpg, .jpeg, .gif">
    <button class="btn btn-primary Save-Exit" type="button" onclick="return SaveExit()">Save and Exit</button>
</form>

JS

这里我注释掉了processData: false,因为当将它传递给客户端控制器时,它将对我在formVM上的所有数据返回null。

代码语言:javascript
复制
function SaveExit() {
    var GetImages = $('[name="file"]');
    console.log(GetImages[0].files)
    var data = {
        Total: $("#Total").val(),
        Attachments : GetImages[0].files
    };

    $.ajax({
        url: "/Forms/InsertForm",
        type: "Post",
        'data': data,
        'dataType': 'json',
        //processData: false,
        success: function (result) {
            window.location.href = "/Reimbusments/Expense"
        },
        error: function (error) {
            console.log(error)
        }
    })
    return false;
}

客户端控制器:

代码语言:javascript
复制
[HttpPost]
public JsonResult InsertForm(FormVM formVM)
{
    var sessionExpense = HttpContext.Session.GetString("ExpenseID");
    var result = formRepository.InsertForm(formVM, sessionExpense);
    return Json(result);
}

客户回购:

代码语言:javascript
复制
public HttpStatusCode InsertForm(FormVM entity, string expensed)
{
    entity.ExpenseId = Int32.Parse(expenseid);
    StringContent content = new StringContent(JsonConvert.SerializeObject(entity), Encoding.UTF8, "application/json");
    var result = httpClient.PostAsync(address.link + request + "FormInsert", content).Result;
    return result.StatusCode;
}

视图模型类:

代码语言:javascript
复制
public class FormVM
{
    public int FormId { get; set; }
    public float? Total { get; set; }
    public int ExpenseId { get; set; }
    public IFormFile Attachments { get; set; }
}

我可以调用我的API控制器,但是由于formVM是空的,所以API不能工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-30 03:22:47

您可以尝试使用以下代码:

联署材料:

代码语言:javascript
复制
function SaveExit() {
            var formData = new FormData();
            formData.append("Total", $("#Total").val());
            formData.append("Attachments", $('[name="file"]')[0].files[0]);

            $.ajax({
                url: "/Forms/InsertForm",
                type: "Post",
                data: formData,
                processData: false,
                contentType: false,
                success: function (result) {
                    window.location.href = "/Reimbusments/Expense"
                },
                error: function (error) {
                    console.log(error)
                }
            })
            return false;
        }

结果:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70526529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档