当_Layout链接在不同页面上使用时,它的操作会有所不同吗?

时间:2014-11-10 10:03:20

标签: jquery html layout

假设我有布局页面(在所有页面中都很常见):

+------------------------------------+
|         HEADER                     |
+------------------------------------+
| N |                                |
| A |                                |
| V |         CONTENT                |
| B |          HERE                  |
| A |                                |
| R |                                |
|   |                                |
|   |                                |
+------------------------------------+
|        FOOTER                      |
+------------------------------------+

在我的标题中,我有类似的内容:

标题

+------------------------------------------------
|
|    LINK_1 | Create | Edit | Remove
|
+-----------------------------------------
|                |
|                |
|

每当我进入'位置'页面,我想让它运行功能' AddLocation'功能,但当它在'用户'页面,我想让它运行功能' AddUser'功能

这可能吗? (按下_Layout页面上的按钮,它会根据当时显示的内容做些不同的事情)?

如果是这样,我应该如何实施?在_layout标题?每个位置/用户页面本身的特定功能?

替代

如果 不是 ,那么如何根据地址值创建switch语句呢?

localHost/Locations //pressing it here will addLocation
localHost/Users     //pressing it here instead will addUser

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。

1自定义栏目(首选)

使用自定义section对您来说最有意义,因为它是可选的,几乎不需要设置:

在您想要按钮的布局中:

@RenderSection("addoption", required: false)

然后在users查看页面中的任意位置:

@section addoption{
   @Html.ActionLink("Add User", "adduser", "Users")
}

并在您的location查看页面

@section addoption{
   @Html.ActionLink("Add Location", "addlocation", "Location")
}

2 ViewBag

另一种选择是使用ViewBag从特定的控制器操作将所需的链接值传递给布局。这需要在多个地方进行设置。

e.g。在布局页面中:

@Html.ActionLink(@ViewBag.AddTitle, @ViewBag.AddAction, @ViewBag.AddController)

并在位置索引操作中的内容如下:

  ViewBag.AddTitle = "Add location";
  ViewBag.AddAction = "AddLocation";
  ViewBag.AddController = "Locations";

并在用户索引操作中执行以下操作:

  ViewBag.AddTitle = "Add user";
  ViewBag.AddAction = "AddUser";
  ViewBag.AddController = "Users";

仅限3个操作

另一个简单的选项是,您的链接只需引用没有控制器的add操作。

@Html.ActionLink("Add", "add")

这将调用当前控制器上的add操作 。您可以将其与选项2的一部分结合使用,以使用ViewBag值设置链接文本。