ASP.NET MVC将ActionLink中的ID传递给控制器

时间:2008-11-25 10:07:09

标签: c# asp.net-mvc

我无法在我的控制器中找到我在html.ActionLink中发送的ID,这是我正在尝试做的事情

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


    public ActionResult Modify(string ID)
    {

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

这就是我所遵循的教程,但它不起作用,它也会在URL的末尾加上长度= 5!

提前致谢!

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

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

似乎有人对以下两条建议进行了投票,但没有公布他们的解决方案!

5 个答案:

答案 0 :(得分:197)

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

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

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

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

答案 1 :(得分:24)

在MVC 4中,您可以通过

从一个视图链接到另一个传递Id或主键的控制器
@Html.ActionLink("Select", "Create", "StudentApplication", new { id=item.PersonId }, null) 

答案 2 :(得分:11)

不要在@之前放置@

new { id = "1" }

当参数/路径

不匹配时,框架会“翻译”它?

答案 3 :(得分:3)

在MVC 5上非常相似

@Html.ActionLink("LinkText", "ActionName", new { id = "id" })

答案 4 :(得分:1)

ID也可以在前面使用@符号,但我们必须在此之后添加一个参数。那是null

看起来像:

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