在路由属性 ASP.NET MVC 的 URL 添加自定义词
Add custom word in the URL of Route attribute ASP.NET MVC
如何在某些 MVC 调用的 URL 中添加自定义的用户定义词?
例如,我在控制器的方法上有这个属性:
[Route("accounts/transactions"]
我想做的是将该路线更改为这种形式:/accounts/{accountNumber}/transactions
其中accountNumber是可变的,在发送请求的那一刻由客户端发送。客户通过 URL 发送他的帐号,如下所示:localhost:50490/accounts/1234567890/transactions
并调用控制器方法。
我能否以某种方式更改 Route 参数以使其能够处理这种情况,或者我需要完全不同的解决方案。
是的,您可以更改路线来处理这种情况。
解决方案一:
[Route("accounts/{accountNumber:int}/transactions"]
public ActionResult Transactions(int accountNumber) {
/* action body */
}
备注:
1) accountNumber:int
仅用于整数,不允许为空。
2) 你的动作必须有 accountNumber
作为参数。
方案二:
您可以在 RouteConfig
中添加这条路线
routes.MapRoute(
name: "accountNumber",
url: "accounts/{accountNumber}/transactions",
defaults: new { controller = "Accounts", action = "Transactions" }
);
您的操作必须将其作为参数
public ActionResult Transactions(string accountNumber) {
/* action body */
}
如何在某些 MVC 调用的 URL 中添加自定义的用户定义词?
例如,我在控制器的方法上有这个属性:
[Route("accounts/transactions"]
我想做的是将该路线更改为这种形式:/accounts/{accountNumber}/transactions
其中accountNumber是可变的,在发送请求的那一刻由客户端发送。客户通过 URL 发送他的帐号,如下所示:localhost:50490/accounts/1234567890/transactions
并调用控制器方法。
我能否以某种方式更改 Route 参数以使其能够处理这种情况,或者我需要完全不同的解决方案。
是的,您可以更改路线来处理这种情况。
解决方案一:
[Route("accounts/{accountNumber:int}/transactions"]
public ActionResult Transactions(int accountNumber) {
/* action body */
}
备注:
1) accountNumber:int
仅用于整数,不允许为空。
2) 你的动作必须有 accountNumber
作为参数。
方案二:
您可以在 RouteConfig
routes.MapRoute(
name: "accountNumber",
url: "accounts/{accountNumber}/transactions",
defaults: new { controller = "Accounts", action = "Transactions" }
);
您的操作必须将其作为参数
public ActionResult Transactions(string accountNumber) {
/* action body */
}