如何在asp.net mvc

时间:2015-08-13 13:39:01

标签: asp.net-mvc-4

我有一个名为customer的区域。它包含一个名为customer的控制器,具有以下操作

public ActionResult BrowseByCategory(int id=0)
        {
            //some code here............
            return View();
        }

我需要在根目录上的_layout.cshtml视图上创建上述操作的链接。

我写了以下标记。但它不起作用

@Html.ActionLink(c.CategoryName, "BrowseByCategory", "Customer", new { area = "customer" },new { id = c.CategoryCode })

请建议更改。

2 个答案:

答案 0 :(得分:0)

ActionLink @Html.ActionLink(c.CategoryName, "BrowseByCategory", new { area = "customer", controller = "Customer", id = c.CategoryCode }, new { @* There should be htmlParameters *@ }) 方法可以在您的情况下使用,如下所示:

curl -X GET 127.0.0.1:8080/api/sum/?a=2&b=3

答案 1 :(得分:0)

您无法在动作中引用某个动作中的模型_Layout.cshtml,或者至少您不应该。从技术上讲,可以_Layout.cshtml定义模型,但是使用此布局的每个...单个..视图只能使用相同的模型。如果您传递了不同的类类型,则会从布局中获得运行时错误。

在您的特定情况下,布局中所需的链接似乎取决于当前正在查看的类别。那么,处理此问题的最佳方法是使用部分。

在布局中,您可以定义以下部分:

@RenderSection("CustomLink", required: false)

只需将其放在您想要显示链接的任何位置即可。如果某些其他视图不需要此自定义链接,则不需要它意味着您不会遇到运行时错误。

然后,在您看来:

@section CustomLink
{
    @Html.ActionLink(c.CategoryName, "BrowseByCategory", "Customer", new { area = "customer" },new { id = c.CategoryCode })
}

现在,这将显示在您的布局中您想要的位置,但您可以在视图级别定义它。