Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
616 views
in Technique[技术] by (71.8m points)

asp.net mvc - ActionLink to show parameters in URL instead of querystring?

I have this route defined:

routes.MapRoute(
                   "Details", // Route name
                   "{home}/{details}/{id}/{name}", // URL with parameters
                   new
                   {
                       controller = "Home",
                       action = "Details",
                       id = UrlParameter.Optional,
                       name = UrlParameter.Optional
                   } // Parameter defaults
               );

The ActionLink:

 @Html.ActionLink("Show Details", "Details", "MyController", new { id = 1, name ="a" })

The actionlink results in /Home/Details/1?name=a I am after /Home/List/1/a

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Your route definition should be like this:

routes.MapRoute(
    "Details", // Route name
    "{controller}/{action}/{id}/{name}", // URL with parameters
    new
    {
        controller = "Home",
        action = "Details",
        id = UrlParameter.Optional,
        name = UrlParameter.Optional
    } // Parameter defaults
);

Also you should use the proper overload:

@Html.ActionLink(
    "Show Details",             // linkText
    "Details",                  // action
    "MyController",             // controller
    new { id = 1, name = "a" }, // routeValues
    null                        // htmlAttributes
)

Notice the null at the end.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...