[英]How does my controller know when to execute one method over another (update/insert) if I have the same URL on the call?
插入:
[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。 这将在以后更改。
REST的约定是我们将HttpMethods用于CRUD操作选择:
详细说明: 创建支持CRUD操作的Web API
然后使用非常默认的“路由”设置(请参见此处: ASP.NET Web API中的路由 )
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}", // the Director as controller
defaults: new { id = RouteParameter.Optional }
);
因此,我们刚刚指示Web API基础结构,如果有方法:
[HttpPost]
public void InsertDirector(Director director) ...
它将用于创建,并且使用的HttpMethod必须为POST
和
//[HttpPost]
[HttpPut] // !! Attention, here is the difference
public void UpdateDirector(Director director)...
如果HttpMethod为PUT
则将调用UpdateDirector
注意:因为在更新过程中我们确实具有现有产品的ID,所以Update方法应类似于:
// the id parameter is a convention as well,
// to be sure that we are updating existing item
// so this would be better
public void UpdateDirector(int id, Director director)...
如果是插入/更新的情况,我假设您在某处会有一个ID字段(隐藏的HTML)。 您应该调用相同的方法,该方法将具有以下逻辑
如果ID为null或ZERO。 做一个插入
如果ID为正数。 进行ID = html.ID的更新
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.