Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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
如何传递多个参数来删除请求C#Rest API_C#_Rest_Parameters_Asp.net Web Api2_Http Delete - Fatal编程技术网

如何传递多个参数来删除请求C#Rest API

如何传递多个参数来删除请求C#Rest API,c#,rest,parameters,asp.net-web-api2,http-delete,C#,Rest,Parameters,Asp.net Web Api2,Http Delete,我需要向API删除请求传递3个参数。这是我的代码,我已经尝试过了 任务模型 public class TaskModel { public int DeveloperID { get; set; } public int ProjectID { get; set; } public string WorkDate { get; set; } } 这是一个控制器类。调用了TaskController [Route("api/Task")] public v

我需要向API删除请求传递3个参数。这是我的代码,我已经尝试过了

任务模型

public class TaskModel
{
    public int DeveloperID { get; set; }
    public int ProjectID { get; set; }
    public string WorkDate { get; set; }
}
这是一个控制器类。调用了
TaskController

    [Route("api/Task")]
    public void Delete(TaskModel value)
    {
        TaskPersistent tp = new TaskPersistent();
        tp.deleteTask(value);
    }
这是
TaskPersistent.class

public void deleteTask(TaskModel task)
{
    try
    {
        string sqlString = "DELETE from devproj WHERE (DeveloperID, ProjectID, WorkDate) =  VALUES ('" + task.DeveloperID + "', '" + task.ProjectID + "', '" + task.WorkDate + "')"; // System.NullReferenceException throw
        MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(sqlString, conn);
        cmd.ExecuteNonQuery();
        long x = cmd.LastInsertedId;
    }
    catch (MySqlException x)
    {
        int errr = x.Number;

        Console.WriteLine(errr);
    }
}
我使用ARC rest客户端使用此API,如下所示,
http://localhost:2731/api/Task?DeveloperID=1&ProjectID=2&WorkDate=“2018-03-14”

但当我像这样传递参数时,API抛出异常:
DeleteAPI.dll中的'System.NullReferenceException'(我在代码中注释了错误发生行)。我在这里做错了什么。

您需要使用此API,将您的
TaskModel
发布为模型绑定器的主体,以便按照设置
Delete
控制器操作的方式使用。或者,将
Delete
方法参数更改为
intdeveloperid、intprojectid、DateTime workDate

    [Route("api/Task")]
    public void Delete(int developerId, int projectId, DateTime workDate)
    {
        var taskModel = new TaskModel
        {
            DeveloperId = developerId,
            ProjectID = projectId,
            WorkDate = workDate
        };
        TaskPersistent tp = new TaskPersistent();
        tp.deleteTask(taskModel);
    }

您需要通过将您的
TaskModel
发布为模型绑定器的主体来使用此API,以便使用设置
Delete
控制器操作的方式。或者,将
Delete
方法参数更改为
intdeveloperid、intprojectid、DateTime workDate

    [Route("api/Task")]
    public void Delete(int developerId, int projectId, DateTime workDate)
    {
        var taskModel = new TaskModel
        {
            DeveloperId = developerId,
            ProjectID = projectId,
            WorkDate = workDate
        };
        TaskPersistent tp = new TaskPersistent();
        tp.deleteTask(taskModel);
    }
此查询不起作用。 SQL删除是:

string sqlString = $"DELETE from devproj WHERE DeveloperID = {task.DeveloperID} AND ProjectID = {task.ProjectID} AND WorkDate = {task.WorkDate}";
在执行查询之前,不要忘记检查模型中的空值

此查询不起作用。 SQL删除是:

string sqlString = $"DELETE from devproj WHERE DeveloperID = {task.DeveloperID} AND ProjectID = {task.ProjectID} AND WorkDate = {task.WorkDate}";


在执行查询之前,不要忘记检查模型中的空值。

可能的重复项需要通过将
TaskModel
发布为模型绑定器的主体来使用此API,以便按照设置
Delete
控制器操作的方式进行操作。或者,将
Delete
方法参数更改为
int developerId,int projectId,DateTime workDate
@VidmantasBlazevicius,您能给我一个答案吗。请。如果您的API方法用于删除操作,一个好的做法是将
[HttpDelete]
添加为属性,并发送Delete而不是GET。是的,在[Route]之间属性和方法声明<代码>[Route(“api/Task”)][HttpDelete]公共无效删除(TaskModel值)
因此,您可以使用DELETE verbs而不是GET调用。您需要通过将
TaskModel
发布为模型绑定器的主体来使用此API,以使用设置
DELETE
控制器操作的方式。或者,将
Delete
方法参数更改为
int developerId,int projectId,DateTime workDate
@VidmantasBlazevicius,您能给我一个答案吗。请。如果您的API方法用于删除操作,一个好的做法是将
[HttpDelete]
添加为属性,并发送Delete而不是GET。是的,在[Route]之间属性和方法声明
[Route(“api/Task”)][HttpDelete]public void Delete(TaskModel value)
,因此您可以使用Delete谓词而不是GET调用。我给出了一个示例代码,说明如何设置控制器,使其以当前的使用方式工作。我尝试了此方法,但当我尝试此方法时,现在出现了此异常,MySql.Data.dll中的“MySql.Data.MySqlClient.MySqlException”@Gamma您得到的异常是什么,以及
sqlString
变量的当前运行时值是什么?请尽可能彻底,以便我们能够适当地帮助您。问题解决了,先生,我以用户身份编辑了我的查询。匿名者的答案。多谢各位much@Gamma没问题,我很高兴你已经解决了你的问题。我提供了一个示例代码,说明如何设置控制器,使其与你当前使用的方式兼容。我尝试了这个,但当我尝试这个时,现在出现了这个异常,MySql.Data.dll中的“MySql.Data.MySqlClient.MySqlException”@Gamma您得到的异常是什么,以及
sqlString
变量的当前运行时值是什么?请尽可能彻底,以便我们能够适当地帮助您。问题解决了,先生,我以用户身份编辑了我的查询。匿名者的答案。多谢各位much@Gamma没问题,我很高兴你解决了你的问题