This is as you surely know the default route:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Start", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Let's say I use the BeginForm() method like this:
@using (Html.BeginForm("MyAction", "MyController", new { id = 4 }))
This will render the following form tag:
<form?method="post"?action="/MyController/MyAction/4">
Now, let's say I've made a custom route:
routes.MapRoute(
"MyCustomRoute", // Route name
"MyController/{id}/{action}", // URL with parameters
new { controller = "MyController", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
When I create a form I'd like it to look like this:
<form?method="post"?action="/MyController/4/MyAction">
However, if I use BeginForm() as in the example above, I will get a url that matches the default route instead. Is there a way to tell BeginForm() to use my custom route instead of the default one when creating the url for the action? Or does BeginForm() always produce urls that follows the default route pattern?
I'm using asp.net mvc 3 if it matters.
See Question&Answers more detail:os