Action Parameter Naming

后端 未结 4 548
情书的邮戳
情书的邮戳 2020-12-25 11:18

Using the default route provided, I\'m forced to name my parameters \"id\". That\'s fine for a lot of my Controller Actions, but I want to use some better variable naming i

相关标签:
4条回答
  • 2020-12-25 11:47

    This still works, your query string will just look like "/Controller/ByAlias?alias=something".

    0 讨论(0)
  • 2020-12-25 11:52

    You can customize the routes with whatever identifiers you like..

    routes.MapRoute(
      "Default",                                              // Route name
      "{controller}/{action}/{alias}",                           // URL with parameters
      new { controller = "Home", action = "Index", alias = "" }  // Parameter defaults
    );
    

    Edit: Here's an overview from the ASP.NET site

    0 讨论(0)
  • 2020-12-25 11:59

    Use the [Bind] attribute:

    public ActionResult ByAlias([Bind(Prefix = "id")] string alias) {
        // your code here
    }
    
    0 讨论(0)
  • 2020-12-25 12:04

    Just because your route uses the name "id" for the ID variable doesn't mean that you have to use the same name in your controller action methods.

    For example, given this controller method...

    public Controller MailerController
    {
        public ActionResult Details(int mailerID)
        {
            ...
            return View(new { id = mailerID });
        }
    }
    

    ...and this action method call from the view...

    <%= Html.ActionLink("More Info", "Details", new { mailerID = 7 }) %>
    

    ...you can use whatever naming convention you wish for the ID parameter in your controller action methods. All you need to do is resolve the new name to the default, whether it's "id", "alias", or whatever.

    The above example should resolve to :

    <a href="/Mailer/Details/7">More Info</a>
    
    0 讨论(0)
提交回复
热议问题