我可以在 ASP.net core 3.0 的 [Route("x/{id}") 中使用变量吗?
Can I use an variable in the [Route("x/{id}") of ASP.net core 3.0?
我正在制作客户仪表板。在此仪表板中,每个客户都有一个或多个联系人。这些联系人有自己的屏幕。要访问该屏幕,我想我会实施一条路线,其中包含所选客户的 ID。现在我必须手动插入 Customersid。我希望它是自动的。我该怎么做?
我的代码:
客户
public CustomerController()
{
_customers = new List<Models.Customer>();
_customers.Add(new Models.Customer { Id = 1, Email = "Test1@gmail.com", Name = "Test1", Password = "Test1"});
_customers.Add(new Models.Customer { Id = 2, Email = "Test12@gmail.com", Name = "Test12", Password = "Test12" });
_customers.Add(new Models.Customer { Id = 3, Email = "Test123@gmail.com", Name = "Test123", Password = "Test123" });
_customers.Add(new Models.Customer { Id = 4, Email = "Test1234@gmail.com", Name = "Test1234", Password = "Test1234" });
_customers.Add(new Models.Customer { Id = 5, Email = "Test12345@gmail.com", Name = "Test12345", Password = "Test12345" });
}
[HttpGet]
public IActionResult GetCustomers()
{
return Ok(_customers);
}
[HttpGet("{id}")]
public IActionResult GetCustomer(int id)
{
foreach(var item in _customers)
{
if(id == item.Id)
{
return Ok(item);
}
}
return NoContent();
}
联系人:
[Authorize]
[Route("customer/{customerid}/contact")]
[ApiController]
public class ContactController : ControllerBase
{
private List<Models.Contact> _contacts;
public ContactController()
{
_contacts = new List<Models.Contact>();
_contacts.Add(new Models.Contact { Id = 1, Email = "Test1@gmail.com", Name = "Test1", Password = "Test1", Phone = 11111 });
_contacts.Add(new Models.Contact { Id = 2, Email = "Test12@gmail.com", Name = "Test12", Password = "Test12", Phone = 1111 });
_contacts.Add(new Models.Contact { Id = 3, Email = "Test123@gmail.com", Name = "Test123", Password = "Test123", Phone = 111 });
_contacts.Add(new Models.Contact { Id = 4, Email = "Test1234@gmail.com", Name = "Test1234", Password = "Test1234", Phone = 11 });
_contacts.Add(new Models.Contact { Id = 5, Email = "Test12345@gmail.com", Name = "Test12345", Password = "Test12345", Phone = 1 });
}
[HttpGet]
public IActionResult GetCustomers()
{
return Ok(_contacts);
}
[HttpGet("{id}")]
public IActionResult GetContact(int id)
{
foreach (var item in _contacts)
{
if (id == item.Id)
{
return Ok(item);
}
}
return NoContent();
}
在您的 ContactController
上,您可以将路线数据移至动作中,并保持路线简单。
例如:
[Route("contact")]
[ApiController]
public class ContactController : ControllerBase
[HttpGet("{customerId}/{contractId}")]
public IActionResult GetContact(int customerId, int contactId)
{
}
然后您可以通过 contact/1/1
访问它,这将为您提供客户 ID == 1 和联系人 ID == 1
我正在制作客户仪表板。在此仪表板中,每个客户都有一个或多个联系人。这些联系人有自己的屏幕。要访问该屏幕,我想我会实施一条路线,其中包含所选客户的 ID。现在我必须手动插入 Customersid。我希望它是自动的。我该怎么做?
我的代码:
客户
public CustomerController()
{
_customers = new List<Models.Customer>();
_customers.Add(new Models.Customer { Id = 1, Email = "Test1@gmail.com", Name = "Test1", Password = "Test1"});
_customers.Add(new Models.Customer { Id = 2, Email = "Test12@gmail.com", Name = "Test12", Password = "Test12" });
_customers.Add(new Models.Customer { Id = 3, Email = "Test123@gmail.com", Name = "Test123", Password = "Test123" });
_customers.Add(new Models.Customer { Id = 4, Email = "Test1234@gmail.com", Name = "Test1234", Password = "Test1234" });
_customers.Add(new Models.Customer { Id = 5, Email = "Test12345@gmail.com", Name = "Test12345", Password = "Test12345" });
}
[HttpGet]
public IActionResult GetCustomers()
{
return Ok(_customers);
}
[HttpGet("{id}")]
public IActionResult GetCustomer(int id)
{
foreach(var item in _customers)
{
if(id == item.Id)
{
return Ok(item);
}
}
return NoContent();
}
联系人:
[Authorize]
[Route("customer/{customerid}/contact")]
[ApiController]
public class ContactController : ControllerBase
{
private List<Models.Contact> _contacts;
public ContactController()
{
_contacts = new List<Models.Contact>();
_contacts.Add(new Models.Contact { Id = 1, Email = "Test1@gmail.com", Name = "Test1", Password = "Test1", Phone = 11111 });
_contacts.Add(new Models.Contact { Id = 2, Email = "Test12@gmail.com", Name = "Test12", Password = "Test12", Phone = 1111 });
_contacts.Add(new Models.Contact { Id = 3, Email = "Test123@gmail.com", Name = "Test123", Password = "Test123", Phone = 111 });
_contacts.Add(new Models.Contact { Id = 4, Email = "Test1234@gmail.com", Name = "Test1234", Password = "Test1234", Phone = 11 });
_contacts.Add(new Models.Contact { Id = 5, Email = "Test12345@gmail.com", Name = "Test12345", Password = "Test12345", Phone = 1 });
}
[HttpGet]
public IActionResult GetCustomers()
{
return Ok(_contacts);
}
[HttpGet("{id}")]
public IActionResult GetContact(int id)
{
foreach (var item in _contacts)
{
if (id == item.Id)
{
return Ok(item);
}
}
return NoContent();
}
在您的 ContactController
上,您可以将路线数据移至动作中,并保持路线简单。
例如:
[Route("contact")]
[ApiController]
public class ContactController : ControllerBase
[HttpGet("{customerId}/{contractId}")]
public IActionResult GetContact(int customerId, int contactId)
{
}
然后您可以通过 contact/1/1
访问它,这将为您提供客户 ID == 1 和联系人 ID == 1