我有一個ASP .Net Core 1.1 MVC Web API。如何在控制器操作中有一個字符串路由約束?字符串路由約束
我有以下兩個動作:
/ GET: api/Users/5
[HttpGet("{id:int}")]
[Authorize]
public async Task<IActionResult> GetUser([FromRoute] int id)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
User user = await _context.User.SingleOrDefaultAsync(m => m.UserId == id);
if (user == null)
return NotFound();
return Ok(user);
}
// GET: api/Users/abcde12345
[HttpGet("{nameIdentifier:string}")]
[Authorize]
public async Task<IActionResult> GetUserByNameIdentifier([FromRoute] string nameIdentifier)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
User user = await _context.User.SingleOrDefaultAsync(m => m.NameIdentifier == nameIdentifier);
if (user == null)
return NotFound();
return Ok(user);
}
第一個工作,但第二個不 - .NET不喜歡「串」的約束。所以基本上,ID我再次執行HTTPGET請求:
必須執行的第一個動作,如果我要求
必須執行第二個...任何想法?謝謝...
謝謝Pradeep。非常詳細的答案! – user1900799