Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从ajax非法调用向Web Api 2控制器传递对象和文件_Javascript_C#_Jquery_Ajax_Asp.net Web Api2 - Fatal编程技术网

Javascript 从ajax非法调用向Web Api 2控制器传递对象和文件

Javascript 从ajax非法调用向Web Api 2控制器传递对象和文件,javascript,c#,jquery,ajax,asp.net-web-api2,Javascript,C#,Jquery,Ajax,Asp.net Web Api2,我试图从Ajax传递一个ViewModel对象和一些文件到一个AspnetWebAPI2控制器,但是抛出了一个TypeError错误:非法调用,如果我删除额外的文件对象,这就可以了 $.ajax({ url: `/api/issues/${ViewModels.issueViewModel.id}`, method:

我试图从Ajax传递一个ViewModel对象和一些文件到一个AspnetWebAPI2控制器,但是抛出了一个TypeError错误:非法调用,如果我删除额外的文件对象,这就可以了

                           $.ajax({
                                url: `/api/issues/${ViewModels.issueViewModel.id}`,
                                method: "PUT",
                                data: {dto: ViewModels.issueViewModel, emailAttach: attachFileData},
                                headers: {
                                    'Authorization': 'Bearer ' + token
                                }
                            })
issueViewModel是一个键值对对象,emailAttach将是附加到FormData的文件 webapi2控制器

 public IHttpActionResult CreateIssue(IssueDto dto, List<HttpFileCollectionBase> emailAttach)
    {
        //Some logic to handle objects passed
    }

}

尝试将IssueDto类中的dto和文件的数据类型更改为字符串。

很抱歉,我没有解释这一点,IssueDto不包含dto作为对象,dto映射到IssueDto,文件不应该映射到dto,它们应该通过请求传递给控制器进行访问。是的。。。将它们传递给控制器时,必须有一个名为IssueDto.的类。。在这个类的对象中,传递的值将被存储。嗨,对不起,我意识到你说的是什么,但是有一个问题,我不能将所有内容都更改为字符串,也不确定我是否理解你的意思,但我已经更新了代码,以清楚地解释我的意思
public int Id { get; set; }
    public string Description { get; set; }
    public string Note { get; set; }

    public List<int> PersonId { get; set; } //Extra 
    public List<string> ApplicationName { get; set; }
    public List<string> AttachedFiles { get; set; }

    public List<PslApplicationDto> PslApplicationDto { get; set; }
    public UrgencyFlag UrgencyFlag { get; set; }
    public CompletionFlag CompletionFlag { get; set; }

    public DateTime? CompletionDate { get; set; }
    public DateTime? DateIssueRegistered { get; set; }
    public DateTime? LastUpdate { get; set; }
    public int CompletionDuration { get; set; }

    public SolutionDto SolutionDto { get; set; }
    public PsUserDto PsUser{ get; set; }
    public EmailDto EmailDto { get; set; }
    public IssueCategorieDto Category { get; set; }
    public List<PersonDto> PersonDtos { get; set; }
    public List<IssueTagsDto> IssueTags { get; set; }
    public List<int> IssueTagsId { get; set; } // Extra info

    public int CategorieId { get; set; }
    public int PsUserId { get; set; }
function attachFile(e) {
e.stopImmediatePropagation();
e.preventDefault();

var attachmentInput = document.getElementById("attachInput");

if (typeof (attachmentInput.files[0]) === "undefined") {
    return toastr.error("Please select a file to attach");
}


attachFileData.append(attachmentInput.files[0].name, attachmentInput.files[0]);
appendAttachmentToForm(attachmentInput.files[0]);