如何让Html.ActionLink回馈非查询链接?

时间:2011-12-16 23:22:41

标签: asp.net asp.net-mvc-3 helpers

每当我使用Html.ActionLink时,它总是给我参数?而不是它分开的网址。

例如:

@Html.ActionLink("Edit", "Edit", new { Username = (string)item.username })

给我:

/Edit?Username=username

而不是:

/Edit/Username 

就像我在控制器中定义它一样。

有谁能告诉我如何获得另一种方式?而不是方式。

由于

2 个答案:

答案 0 :(得分:2)

您可能需要在global.asax中注册路线以定义Username参数:

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

    routes.MapRoute(
        "EditStuff",
        "{controller}/{action}/{Username}",
        new { controller = "YourControllerName", action = "Edit" }
    );

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

}

答案 1 :(得分:0)

我使用AttributeRouting来做这些事情,用它可以用实际路径装饰你的控制器,如下所示:

[GET("/Edit/{Username}")]
public ActionResult Edit(string Username)