在C#中使用MVC编写,我有一个设备向{host}/clock
发出HTTP请求。我想要不同的设备写入不同的地方,所以我想进入主机{.../company1/}
,{.../company2/}
。然后我会有一个CompanyController
,可以重定向company1
,company2
等的请求,而无需硬编码公司的名称。
所以对{host}/company/company1/clock
的请求会写入company1的数据库。据推测,如果我进入{host}/company/notacompany/
,我仍然希望看到值"notacompany"
,所以我可以将其重定向到其他地方。如何在没有专门编写company1
动作的情况下将company1
作为公司控制器内的地址进行捕获,或者这是错误的方法吗?
您可以使用属性路由告诉路由引擎如何处理route参数(company1
,company2
等...)。你可以使用switch
并处理notacompany
中的default
:
public class CompanyController : Controller {
[Route("/[controller]/{companyId}")]
public ActionResult Index(string companyId) {
switch(companyId) {
case "company1":
//Process company1.
case "company2":
//Process company2.
default:
//Process 'notacompany' here.
}
}
}