没有人知道如何编辑记录!没有人执行此操作吗? POST,GET和DELETE都可以正常工作,但无论你做什么,PUT都不起作用。没有人使用ASP.NET中的Web API2编辑记录吗?
我已经使用过Hurl.it和POSTMAN,并且其中任何一个都无法使用PUT执行编辑。它只产生400错误 - 没有关于错误的信息,因为请求没有任何问题!
世界上是否有人设法用此编辑记录?当赏金可用时,我会尽可能多地给予 - 请有人告诉我们如何执行此操作。
怎么没有人注意到这个API不能完全运行?我不知道还有什么要问的! ASP.NET论坛上没有人知道如何做到这一点。
HURL.IT
在Web API 2 - 400错误中......没有其他信息(因为请求没有任何问题)
POSTMAN - 与上述相同(或多或少)
控制器内的代码:
// PUT: api/Table1s/5
[ResponseType(typeof(void))]
public IHttpActionResult PutTable1(int id, Table1 table1)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != table1.TestID)
{
return BadRequest();
}
db.Entry(table1).State = EntityState.Modified;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!Table1Exists(id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
答案 0 :(得分:1)
如果您使用Attribute Routing,您的控制器可能看起来像这样......
[RoutePrefix("api/Table1s")]
public class Table1Controller : ApiController {
// PUT: api/Table1s/5
[HttpPut]
[Route("{id:int}")]
[ResponseType(typeof(void))]
public IHttpActionResult PutTable1(int id, [FromBody]Table1 table1) {...}
}
对该操作的请求可能看起来像......
PUT http://localhost:5076/api/Table1s/5 HTTP/1.1
User-Agent: Fiddler
Host: localhost:5076
Content-Type: application/json
Content-Length: 55
{
"fieldname1":"value1",
"fieldname2":"value2"
}
确保您已将属性路由配置为默认配置
//....
config.MapHttpAttributeRoutes()
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
);
//....