2012-07-16 73 views
0

问题是,URL = http://localhost:4032/Category/5中已存在id = 5。但是,为了传递价值的ActionLink的,看来我必须这样做:如何从ActionLink访问ID参数?

<td> @Html.ActionLink(p.ProdNo, "Main", "Home", new { id = 5, prodno = p.ProdNo }, null) </td> 

导致正确的网址:http://localhost:4032/Main/5/1097

但有这样做似乎并不十分正确。我知道必须有一些聪明的方式来解决这个问题。不幸的是,现在已经很晚了,我都很聪明。

我尝试这样做:

<td> @Html.ActionLink(p.ProdNo, "Main", "Home", new {prodno = p.ProdNo }, null) </td> 

但结束了http://localhost:4032/Main?prodno=1097

我试着在代码隐藏中将相应的参数添加到相应的方法中,但似乎也没有效果。

因此,简而言之,当使用ActionLink时,如何获取URL中的路径值并传递另一个/新的路由值?

的Global.asax

public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
       "Sections", // Route name 
       "{controller}/{action}/{id}/{prodno}/{instid}/{section}", // URL with parameters 
       new { controller = "TestEdit", action = "Index", id = UrlParameter.Optional, prodno = UrlParameter.Optional, instid = UrlParameter.Optional, section = UrlParameter.Optional } // Parameter defaults 
      ); 

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

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

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

     } 
+0

@DotNet .....是类别查看您的代码背后的型号从?复制?如果是这样,Category.Id = 5? – MikeTWebb 2012-07-16 21:34:25

+0

我有一个viewmodel,但是,ID确实等于5 – dotnetN00b 2012-07-16 22:33:27

回答

1

我认为你需要为您的prodno参数的路由。貌似这个主题可以包含一个解决方案:

Routing with Multiple Parameters using ASP.NET MVC

+0

我也是这样做的。我会在上面编辑。 – dotnetN00b 2012-07-16 21:40:53

+0

您上一个示例dosent包含id参数的值吗? – 2012-07-16 22:12:59

+0

我知道。我正在显示它正在生成的URL,这是错误的。 – dotnetN00b 2012-07-16 22:34:12

1

你可以从RouteData取,

@Html.ActionLink(
    p.ProdNo, 
    "Main", 
    "Home", 
    new { id = ViewContext.RouteData["id"], prodno = p.ProdNo }, 
    null 
) 
+0

这是处理它的正常方法吗? – dotnetN00b 2012-07-17 18:14:54

+0

正常的方法是使用视图模型。但是这也可以完成这项工作。 – 2012-07-18 05:35:21