C# 如果我在调用中有相同的URL,我的控制器如何知道何时在另一个方法上执行一个方法(更新/插入)?

C# 如果我在调用中有相同的URL,我的控制器如何知道何时在另一个方法上执行一个方法(更新/插入)?,c#,asp.net-web-api,C#,Asp.net Web Api,插入: [HttpPost] public void InsertDirector(Director director) { myConnection.Open(); var query = "INSERT INTO dbo.AWD_Directors (AwardTitleId, PersonId, NameId, DirectorSequence, IsOnBallot, Concatenation, WhoEntered, WhoChanged) VALUES (" +

插入:

[HttpPost]
public void InsertDirector(Director director)
{
    myConnection.Open();
    var query = "INSERT INTO dbo.AWD_Directors (AwardTitleId, PersonId, NameId,  DirectorSequence, IsOnBallot, Concatenation, WhoEntered, WhoChanged) VALUES (" + director.AwardTitleId + ", " + director.PersonId + ", " + director.NameId + ", " + director.DirectorSequence + ", " + director.IsOnBallot + ", '" + director.Concatenation + "', 0, 0)";
    var cmd = new SqlCommand(query, myConnection);
    cmd.ExecuteNonQuery();
    myConnection.Close();
}
更新:

[HttpPost]
public void UpdateDirector(Director director)
{
  myConnection.Open();
  var query = "UPDATE dbo.AWD_Directors SET NameId=" + director.NameId + ", DirectorSequence = " + director.DirectorSequence + ", IsOnBallot = " + director.IsOnBallot + ", Concatenation = '" + director.Concatenation + "' WHERE AwardTitleId = " + director.AwardTitleId + "AND PersonId = " + director.PersonId + " AND NameId = " + director.NameId;
  var cmd = new SqlCommand(query, myConnection);
  cmd.ExecuteNonQuery();
  myConnection.Close();
}
插入路径:

routes.MapHttpRoute(name: "InsertDirector", routeTemplate: "api/awards/directors", defaults: new
{
    controller = "Awards", action = "InsertDirector"
});
更新路线:

routes.MapHttpRoute(name: "UpdateDirector", routeTemplate: "api/awards/directors", defaults: new
{
    controller = "Awards",
    action = "UpdateDirector"
 });
我可以使用哪些命名约定来改进现有的命名约定


顺便说一句,不要管内嵌式SQL。这将在以后更改。

如果是插入/更新的情况,我假设您在某处有一个ID字段(隐藏的HTML)。您应该调用相同的方法,该方法的逻辑如下

如果ID为null或零。插入

如果ID是正数。在ID=html.ID的地方进行更新,如果是Insert/update的话,我想你会在某个地方有一个ID字段(隐藏的html)。您应该调用相同的方法,该方法的逻辑如下

如果ID为null或零。插入

如果ID是正数。在ID=html.ID的位置执行更新REST的惯例是我们使用HttpMethods进行CRUD操作选择:

  • 获取-读取操作(列表和GetById)
  • 插入后
  • 放置-Udpating
  • 删除-删除
详细说明如下:

然后使用非常默认的路由设置(请参阅此处的更多信息:)

因此,我们刚刚指示Web API基础设施,如果有方法:

[HttpPost]
public void InsertDirector(Director director) ...
它将用于创建,使用的HttpMethod必须是
POST

//[HttpPost]
[HttpPut]      // !! Attention, here is the difference
public void UpdateDirector(Director director)... 
如果HttpMethod是
PUT

注意:因为在更新过程中,我们确实拥有现有产品的ID,所以更新方法应该如下所示:


REST的惯例是我们使用HttpMethods进行CRUD操作选择:

  • 获取-读取操作(列表和GetById)
  • 插入后
  • 放置-Udpating
  • 删除-删除
详细说明如下:

然后使用非常默认的路由设置(请参阅此处的更多信息:)

因此,我们刚刚指示Web API基础设施,如果有方法:

[HttpPost]
public void InsertDirector(Director director) ...
它将用于创建,使用的HttpMethod必须是
POST

//[HttpPost]
[HttpPut]      // !! Attention, here is the difference
public void UpdateDirector(Director director)... 
如果HttpMethod是
PUT

注意:因为在更新过程中,我们确实拥有现有产品的ID,所以更新方法应该如下所示:


如果有帮助,那就太好了:)如果有帮助,那就太好了:)