How to create route mappings for 2 different parametershttp://forums.asp.net/t/1801149.aspx/1?How+to+create+route+mappings+for+2+different+parametersTue, 08 May 2012 15:05:24 -040018011494969782http://forums.asp.net/p/1801149/4969782.aspx/1?How+to+create+route+mappings+for+2+different+parametersHow to create route mappings for 2 different parameters <p>I am very new to MVC concepts and am working with MVC4 and noticed an issue.&nbsp; Any help would be greatly appreciated.</p> <p>I have 2 different methods in my controller. One requires int parameter &quot;id&quot; and the other requires int parameter &quot;userId&quot;. As suggested in some articles, I am registering a separate route map for each parameter name in Global.asax.cs - RegisterRouteMapping method. According to these articles its all required to be done to support 2 parameter names.</p> <p><strong>The problem is</strong>:&nbsp; When I type url&nbsp; Controller/GetValues/5 it works and I get 5 as &quot;id&quot; in GetValues method. But when I type Controller/Details/10 the &quot;userId&quot; is null in the Detail method.</p> <p>If I interchange the mappings and put the one for userId on top,&nbsp; I get correct value for &quot;userId&quot; in Details method but &quot;id&quot; will be null in the GetValues method.</p> <p><span style="text-decoration:underline">Following are the two methods in controller</span></p> <p>public <span face="Consolas" color="#2b91af" size="2" style="color:#2b91af; font-family:Consolas; font-size:small"> <span face="Consolas" color="#2b91af" size="2" style="color:#2b91af; font-family:Consolas; font-size:small"><span face="Consolas" color="#2b91af" size="2" style="color:#2b91af; font-family:Consolas; font-size:small">ActionResult </span></span></span><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small">GetValues(</span></span><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small">int</span></span></span><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small">? id)</span></span></p> <p><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small">{&nbsp; </span></span><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small">return</span></span></span><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"> View();</span></span>&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p> <p><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small">public</span></span></span><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"> </span></span><span face="Consolas" color="#2b91af" size="2" style="color:#2b91af; font-family:Consolas; font-size:small"><span face="Consolas" color="#2b91af" size="2" style="color:#2b91af; font-family:Consolas; font-size:small"><span face="Consolas" color="#2b91af" size="2" style="color:#2b91af; font-family:Consolas; font-size:small">ActionResult</span></span></span><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"> Details(</span></span><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small">int</span></span></span><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small">? userId)</span></span></p> <p><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small">{ return View (); }</span></span></p> <p></p> <p><span style="text-decoration:underline"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small">Following is code from Global.asax&nbsp; </span></span></span></p> <p>public static void RegisterRoutes(RouteCollection routes)</p> <p>{</p> <p>routes.IgnoreRoute(&quot;{resource}.axd/{*pathInfo}&quot;);</p> <p>//Add the default route for id</p> <p>routes.MapRoute(&nbsp; &quot;Default&quot;, // Route name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p> <p>&quot;{controller}/{action}/{id}&quot;, // URL with parameters&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p> <p>new { controller = &quot;Home&quot;, action = &quot;Index&quot;, id = UrlParameter.Optional }, // Parameter defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p> <p>new String[] {&nbsp; namespaces }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p> <p>);&nbsp;</p> <p>//Add the default route for userId</p> <p>routes.MapRoute(&nbsp;&nbsp; &quot;Default_user&quot;, // Route name&nbsp;</p> <p>&quot;{controller}/{action}/{userId}&quot;, // URL with parameters&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p> <p>new { controller = &quot;Home&quot;, action = &quot;Index&quot;, userId = UrlParameter.Optional }, // Parameter defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p> <p>new String[] { namespaces }&nbsp; ); }</p> <p>&nbsp;</p> <p>Thanks in advance</p> <p>SJ</p> 2012-05-07T22:01:13-04:004969915http://forums.asp.net/p/1801149/4969915.aspx/1?Re+How+to+create+route+mappings+for+2+different+parametersRe: How to create route mappings for 2 different parameters <p>your routing will not work. routing picks the first match. route matching is pattern matching only</p> <p>&nbsp; &nbsp;{controller}/{action}/{id} &nbsp;&nbsp;</p> <p>with default values for controlelr, action, and option id, this pattern matches all the follwing.</p> <p>&nbsp; &nbsp;/<br> &nbsp; &nbsp;/somevalue<br> &nbsp; &nbsp;/somevalue/<br> &nbsp; &nbsp;/somevalue/anothervalue<br> &nbsp; &nbsp;/somevalue/anothervalue/<br> &nbsp; &nbsp;/somevalue/anothervalue/yetanothervalue<br> &nbsp; &nbsp;/somevalue/anothervalue/yetanothervalue?a=b<br> &nbsp;</p> <p>there is no pattern that will fail to match here that will match&nbsp;</p> <p>&nbsp; &nbsp;{controller}/{action}/{id} &nbsp;&nbsp;</p> <p>as they are the same pattern.</p> &lt;div&gt;&lt;/div&gt; <p>&nbsp;</p> <p>&nbsp; &nbsp;&nbsp;</p> <p></p> <p></p> 2012-05-08T03:19:24-04:004970013http://forums.asp.net/p/1801149/4970013.aspx/1?Re+How+to+create+route+mappings+for+2+different+parametersRe: How to create route mappings for 2 different parameters <p><span face="Consolas" size="2"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small">1. </p> <blockquote><span class="icon-blockquote"></span> <h4>SJMVC</h4> &quot;{controller}/{action}/{userId}&quot;</blockquote> </span></span> <p></p> <p><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"></p> <blockquote><span class="icon-blockquote"></span> <h4>SJMVC</h4> &quot;{controller}/{action}/{id}&quot;,</blockquote> </span></span> <p></p> <p><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small">is the same route! For example, if you have</span></span></p> <p><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small">a/b/c , both are satisfied. MVC picks first route that satisfies and assign parameters</span></span></p> <p></p> <p>2.</p> <p>1.</p> <blockquote><span class="icon-blockquote"></span> <h4>SJMVC</h4> But when I type Controller/Details/10 the &quot;userId&quot; is null in the Detail method.</blockquote> <blockquote><span class="icon-blockquote"></span> <h4>SJMVC</h4> <span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small">public</span></span></span><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"> </span></span><span face="Consolas" color="#2b91af" size="2" style="color:#2b91af; font-family:Consolas; font-size:small"><span face="Consolas" color="#2b91af" size="2" style="color:#2b91af; font-family:Consolas; font-size:small"><span face="Consolas" color="#2b91af" size="2" style="color:#2b91af; font-family:Consolas; font-size:small">ActionResult</span></span></span><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"> Details(</span></span><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small">int</span></span></span><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small">? userId)</span></span></blockquote> <p></p> <p>put</p> <p><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small">public</span></span></span><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"> </span></span><span face="Consolas" color="#2b91af" size="2" style="color:#2b91af; font-family:Consolas; font-size:small"><span face="Consolas" color="#2b91af" size="2" style="color:#2b91af; font-family:Consolas; font-size:small"><span face="Consolas" color="#2b91af" size="2" style="color:#2b91af; font-family:Consolas; font-size:small">ActionResult</span></span></span><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"> Details(</span></span><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small"><span face="Consolas" color="#0000ff" size="2" style="color:#0000ff; font-family:Consolas; font-size:small">int</span></span></span><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small">? id)</span></span></p> <p><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small">as in the route registration.</span></span></p> <p><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"><span face="Consolas" size="2" style="font-family:Consolas; font-size:small"></span></span></p> 2012-05-08T04:58:22-04:004971113http://forums.asp.net/p/1801149/4971113.aspx/1?Re+How+to+create+route+mappings+for+2+different+parametersRe: How to create route mappings for 2 different parameters <p>Thanks a lot bruce (sqlwork.com) and ignatandrei.</p> <p>I understand it now.</p> <p>&nbsp;</p> <p>&nbsp;</p> 2012-05-08T15:05:24-04:00