2008-11-25 149 views
85

我无法看到要检索我在控制器中的html.ActionLink中发送的ID,以下是我正在尝试执行的操作ASP.NET MVC将ActionLink中的ID传递给控制器​​

<li> 
    <%= Html.ActionLink("Modify Villa", "Modify", "Villa", new { @id = "1" })%></li> 


    public ActionResult Modify(string ID) 
    { 

     ViewData["Title"] =ID; 
     return View(); 
    } 

这就是我遵循的教程所推荐的,但它不起作用,它也将?length = 5放在URL的末尾!

在此先感谢!

编辑:这里是我使用的路线,它的默认

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

似乎有人downvoted以下两个建议,但没有公布他们的解决方案!

回答

186

看起来不像你使用ActionLink的正确重载。试试这个: -

<%=Html.ActionLink("Modify Villa", "Modify", new {id = "1"})%> 

这里假设您的视图位于/ Views/Villa文件夹下。如果没有,那么我怀疑你需要: -

<%=Html.ActionLink("Modify Villa", "Modify", "Villa", new {id = "1"}, null)%> 
+4

良好的通话 - 问题是,该函数的第一个重载了“HtmlAttributes”作为第四个参数。因此,添加“,null”会强制编译器使用内联对象作为路由参数。 – 2008-11-25 11:21:26

10

不要把@在ID前?Lenght

new { id = "1" } 

框架“翻译”就当是在参数/路由不匹配

20

在MVC 4您可以从一个视图传递ID或主键另一个控制器通过

1

链路ID将与@标志工作前面也是,但我们必须在此之后添加一个参数。这是null

样子:

@Html.ActionLink("Label Name", "Name_Of_Page_To_Redirect", "Controller", new {@id="Id_Value"}, null) 
3

在MVC 5颇为相似

@Html.ActionLink("LinkText", "ActionName", new { id = "id" }) 
相关问题