Html.ActionLink Action Straggler

时间:2013-09-11 00:58:23

标签: asp.net-mvc-4 html.actionlink

我有一个导航菜单,链接结构如下:

<div class="childLinkGroup">
    <div class="headerLink">@Html.ActionLink("Engine Products", null, "EngineProducts", null, null)</div>
    <ul>
        <li>@Html.ActionLink("Perkins Engines", "PerkinsEngines", "EngineProducts", null, null)</li>
        <li>@Html.ActionLink("Isuzu Engines", "IsuzuEngines", "EngineProducts", null, null)</li>
        <li>@Html.ActionLink("FPT PowerTrain", "FPTPowerTrain", "EngineProducts", null, null)</li>
        <li>@Html.ActionLink("Mitsubishi Engines", "MitsubishiEngines", "EngineProducts", null, null)</li>
    </ul>
</div>

在控制器类中:

// GET: /EngineProducts/
public ActionResult Index()
{
    return View(ModelData);
}

//
// GET: /EngineProducts/PerkinsEngines
public ActionResult PerkinsEngines()
{
    ModelData.MenuCategories.Where(x => x.Action == "PerkinsEngines").FirstOrDefault().Active = true;

    return View("Perkins Engines", ModelData);
}

从主页访问时,这些都可以正常工作。

如果您已经在/EngineProducts/IsuzuEngines这样的子页面上,并尝试访问/TransmissionProducts之类的其他父级链接,则会在链接上留下IsuzuEngines,从而生成一个可以显示的页面找不到。

所需网址:/ TransmissionProducts

实际网址:/ TransmissionProducts / IsuzuEngines

Html.ActionLink有一堆覆盖,虽然我看到它们,但我看不到一组看起来更好的不同的参数。

1 个答案:

答案 0 :(得分:0)

当您的父链接构造如下:

@Html.ActionLink("Engine Products", null, "EngineProducts", null, null)

将使用action的上一个请求值,因为您在构建链接时提供null。您应该明确指定在为父链接发出请求时将使用的操作。