[英]How to pass multiple parameters to DELETE request C# Rest API
我需要將3個參數傳遞給我的API DELETE請求。 這是我嘗試的代碼。
TaskModel
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拋出異常: 'System.NullReferenceException' in DeleteAPI.dll
(我在我的代碼行中注釋了錯誤發生)。 我在這里做錯了。
您需要通過將TaskModel
作為主體發布來使用此API,以使模型綁定程序與您設置Delete
Controller操作的方式一起使用。 或者,將Delete
方法的參數更改為int developerId, int projectId, 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);
}
string sqlString = "DELETE from devproj WHERE (DeveloperID, ProjectID, WorkDate) = VALUES ('" + task.DeveloperID + "', '" + task.ProjectID + "', '" + task.WorkDate + "')"; // System.NullReferenceException throw
此查詢不起作用。 SQL刪除是:
string sqlString = $"DELETE from devproj WHERE DeveloperID = {task.DeveloperID} AND ProjectID = {task.ProjectID} AND WorkDate = {task.WorkDate}";
並且不要忘記在執行查詢之前檢查模型中的空值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.