假设我有布局页面(在所有页面中都很常见):
+------------------------------------+
| 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
答案 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
值设置链接文本。