假设我有一个类

public class ItemController:Controller
{
    public ActionResult Login(int id)
    {
        return View("Hi", id);
    }
}

在ItemController所在的Item文件夹之外的页面上,我想创建一个指向Login方法的链接。所以是哪种Html。我应该使用ActionLink方法,我应该传递什么参数?

具体来说,我正在寻找替代的方法

Html.ActionLink(article.Title,
    new { controller = "Articles", action = "Details",
          id = article.ArticleID })

在最近的ASP中已经退役。NET MVC的化身。


当前回答

为了可读性和避免混淆,使用命名参数。

@Html.ActionLink(
            linkText: "Click Here",
            actionName: "Action",
            controllerName: "Home",
            routeValues: new { Identity = 2577 },
            htmlAttributes: null)

其他回答

我想补充一下金怒的回答。他提供了解决方案,但一开始我也不能让它工作,并得到了像Adhip Gupta一样的结果。然后我意识到,路由必须首先存在,参数必须与路由完全匹配。所以我有一个id,然后一个文本参数我的路线,这也需要包括在内。

Html.ActionLink(article.Title, "Login", "Item", new { id = article.ArticleID, title = article.Title }, null)
Html.ActionLink(article.Title, "Login/" + article.ArticleID, 'Item") 

您可能想看看RouteLink()方法。它允许您通过字典指定所有内容(除了链接文本和路由名称)。

与MVC5我已经这样做了,它是100%的工作代码....

@Html.ActionLink(department.Name, "Index", "Employee", new { 
                            departmentId = department.DepartmentID }, null)

你们可以从中得到启发…

这个呢

<%=Html.ActionLink("Get Involved", 
                   "Show", 
                   "Home", 
                   new 
                       { 
                           id = "GetInvolved" 
                       }, 
                   new { 
                           @class = "menuitem", 
                           id = "menu_getinvolved" 
                       }
                   )%>