如何让Html.RenderAction使用我的参数?

时间:2015-09-18 16:54:42

标签: asp.net-mvc

我在RouteConfig.cs中有这个:

routes.MapRoute(
    name: "Promo",
    url: "Promo/{slug}",
    defaults: new { controller = "Promo", action = "Index", slug = UrlParameter.Optional }
);

在PromoController.cs中:

[ActionName("Index")]
public ActionResult Index( string slug = "" )
{
    // code that uses slug
}

然后在cshtml页面中,我试图这样做:

@{Html.RenderAction("Index", "Promo", "drink");}

但"饮料"参数未传递给我的控制器。

2 个答案:

答案 0 :(得分:2)

您必须指定"drink"应传递给slug参数:

@{Html.RenderAction("Index", "Promo", new { slug = "drink" });}

只要您停留在同一个控制器中,就可以省略"Promo",但始终需要操作名称。

答案 1 :(得分:1)

这应该有效:

@{Html.RenderAction("Index", "Promo", new { slug = "drink"});}