来自Html.ActionLink的Controller的参数

时间:2017-08-02 07:40:36

标签: c# html asp.net asp.net-mvc-5

在主页视图中,我生成了许多链接:

        <ul class="nav navbar-nav">
            @foreach (var item in ViewBag.RegList)
            {
                <li>@Html.ActionLink((string)item.registryName, "Index", "Registry", new { item.registryName }, new { item.registryID }) </li>
            }
        </ul>

我没有 - 我如何在ActionLink中为我的控制器设置参数以及它们从哪里开始?

这就是我在控制器中定义Index的方式:

public async Task<ActionResult> Index(object attr)

但是在attr中只有对象,当它转换为字符串时变为null。如果orgignal类型是字符串 - 那么也是null。

如何传输参数?或者我将值转换为错误的类型?

我也不明白 - ActionLink(routeValues)的第四个参数必须是什么?

我使用的方法:https://msdn.microsoft.com/en-us/library/dd504972(v=vs.108).aspx

或者这一个:https://msdn.microsoft.com/en-us/library/dd493068(v=vs.108).aspx

1 个答案:

答案 0 :(得分:0)

如果查看创建的链接,它们将包含一组查询字符串参数

     "https://some.where/controller/SomeAction/7788?extraParam1=foo&extraParam2=bar"

MVC的标准路由配置使参数“id”成为本地路径的一部分(示例中为“7788”),而其他参数则添加到查询字符串中(在问号之后)。

您对该操作的方法签名应该类似于

public async Task<ActionResult>
           SomeAction(string id, string extraParam1, string extraParam2)

获取示例链接中的参数。