在Route属性ASP.NET MVC的URL中添加自定义单词



如何在某些MVC调用的URL中添加自定义、用户定义的单词?

例如,我在控制器的方法上有这个属性:

[Route("accounts/transactions"]

我想做的是将该路线更改为以下形式:/accounts/{accountNumber}/transactions

其中accountNumber是可更改的,并且在发送请求时由客户端发送。客户端通过如下URL发送他的帐号:localhost:50490/accounts/1234567890/transactions,控制器方法被调用。

我可以以某种方式更改Route参数,使其能够处理这种情况吗?或者我需要完全不同的解决方案。

是的,您可以更改路由来处理这种情况。

解决方案1:

 [Route("accounts/{accountNumber:int}/transactions"]
 public ActionResult Transactions(int accountNumber) {
     /* action body */
 }

注意:

1) accountNumber:int只代表整数,不允许为null。

2) 您的操作必须将accountNumber作为参数。


解决方案2:您可以在RouteConfig 中添加此路线

 routes.MapRoute(
      name: "accountNumber",
      url: "accounts/{accountNumber}/transactions",
      defaults: new { controller = "Accounts", action = "Transactions" }
 );

您的操作必须将其作为参数

 public ActionResult Transactions(string accountNumber) {
     /* action body */
 }

最新更新