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


98

我看不到要在控制器中的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末尾添加了?Length = 5!

提前致谢!

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

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

似乎有人否决了以下两个建议,但没有发布解决方案!

Answers:


203

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

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

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

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

4
好话-问题在于该函数的第一个重载将“ HtmlAttributes”作为第四个参数。因此,添加“,null”将迫使编译器将内联对象用作路由参数。
蒂莫西·库里

26

在MVC 4中,您可以通过一个ID或主键通过一个视图链接到另一个控制器

@Html.ActionLink("Select", "Create", "StudentApplication", new { id=item.PersonId }, null) 

12

不要在ID前面加上@

new { id = "1" }

当参数/路由不匹配时,框架以?Lenght对其进行“翻译”



1

该ID也会@在前面带有符号,但是我们必须在此之后添加一个参数。那是null

看起来像:

@Html.ActionLink("Label Name", "Name_Of_Page_To_Redirect", "Controller", new {@id="Id_Value"}, null)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.