Lor*_*ion 5 c# asp.net-web-api
我是MVC Web Api的新手.
我想有两种不同的方法.
PUT localhost/api/user- 修改用户
POST localhost/api/user- 添加用户
所以我ApiController看起来像这样:
[HttpPost]
public bool user(userDTO postdata)
{
return dal.addUser(postdata);
}
[HttpPut]
public bool user(userDTO postdata)
{
return dal.editUser(postdata);
}
Run Code Online (Sandbox Code Playgroud)
Howerver我的HttpPut方法说"已经用相同的参数类型来判断一个名为user的成员.
不应该[HttpPut]和[HttpPut]方法独特吗?
HttpPost和HttpPut之间的MVC Web Api差异
HTTP PUT应该接受请求的主体,然后将其存储在由标识的资源中URI.
HTTP POST更通用.它应该在服务器上启动一个动作.该操作可以是将请求主体存储在由其标识的资源中URI,或者它可以是不同的URI,或者它可以是不同的操作.
PUT就像文件上传.对URI的放置会完全影响该URI.对URI的POST可能会产生任何影响.
已经定义了一个名为user的成员,其参数类型相同
您不能在同一范围内使用相同签名的多个方法,例如相同的返回类型和参数类型.
[HttpPost]
public bool User(userDTO postdata)
{
return dal.addUser(postdata);
}
[HttpPut]
[ActionName("User")]
public bool UserPut(userDTO postdata)
{
return dal.editUser(postdata);
}
Run Code Online (Sandbox Code Playgroud)
更相关的ans.检查一下. 在同一个Controller中具有相同Action名称的GET和POST方法
当您有两个具有相同名称和相同签名的方法时,没有属性可以使您的方法唯一.
你的案例中的解决方案看起来像这样.
[HttpPost]
public bool User(userDTO postdata)
{
return dal.addUser(postdata);
}
[HttpPut]
[ActionName("User")]
public bool UserPut(userDTO postdata)
{
return dal.editUser(postdata);
}
Run Code Online (Sandbox Code Playgroud)
PS:命名方法的惯例是你应该使用PascalCase并在命名方法时使用动词.
| 归档时间: |
|
| 查看次数: |
12501 次 |
| 最近记录: |