【问题标题】:Add custom word in the URL of Route attribute ASP.NET MVC在 Route 属性 ASP.NET MVC 的 URL 中添加自定义词
【发布时间】:2015-04-03 11:07:14
【问题描述】:

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

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

[Route("accounts/transactions"]

我正在尝试将这条路线更改为这种形式:/accounts/{accountNumber}/transactions

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

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

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 routes


    【解决方案1】:

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

    解决方案 1:

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

    注意事项:

    1) accountNumber:int 仅用于整数,不允许为空。

    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 */
     }
    

    【讨论】:

    • 感谢您的回答,还有一个问题:所以在所有情况下都必须将 int 传递给方法(或字符串),对吗? @adricadar
    • 是的,在所有情况下都需要,要接受 null,您必须在解决方案 1 中添加 {accountNumber?},在解决方案 2 中,在 defaults 中添加 accountNumber = UrlParameter.Optional
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    相关资源
    最近更新 更多