2017-07-15 4 views
0

私は/ api/values/{any number}でトリガされるこのメソッドを持っています。dotnet coreがURLの末尾からIDを取得する

public class ValuesController : Controller 
{ 

    [HttpPut("{id}")] 
    public void Put(int id, [FromBody]string value) 
    { 
     Console.WriteLine(id); 
     Program.GetCustomer(id); 
    } 
} 

Console.WriteLine(id)は、URLの末尾にある数値を返す必要があるときに値0を返します。これがどういうふうに機能するのか誤解しているのかどうか分かりません。

答えて

0
[Route("api/[controller]")] 
public class ValuesController : Controller {  
    [HttpPut("{id:int}")] //Matches PUT api/values/5 
    public IActionResult Put(int id, [FromBody]string value) { 
     Console.WriteLine(id.ToString()); 
     var customer = Program.GetCustomer(id); 
     return customer != null ? Ok(customer) : NotFound(); 
    } 
} 

上記コントローラとアクションは

http://<host>/api/values/5 
idアクションの値 5にマッピングされなければならない

の本体で送信されたものが移入valueにPUT要求と一致している必要があり要求。

ルート制約{id:int}は、URLセグメントに入力された有効な整数に対してルートが一致するようにします。

制約が削除され、無効な整数が入力された場合、解析された値が有効な整数に解析されなかった場合、値0idの値にデフォルト値の値としてマップされます。

+0

ああ、文字通り5にのみ一致しますか?私はそれが単なる例であると思った。 – Matt

+0

@Matt '5'は単なる例である。有効な整数と一致します。 – Nkosi

関連する問題