在@html.actionlink()中传递多个参数

时间:2014-02-19 19:45:37

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

我正在使用actionlink将参数“code”传递给项目的控制器,并在新视图上获取该项目的详细信息(实际上,它是调用3个部分视图的控制器)

我还需要传递参数“description”,但这只是一个需要在新视图中显示的值,并且在控制器中没有用(我使用“代码”来过滤数据库记录)。

@foreach (var item in Model.MyModel)
{
  <tr>
    <td>
      @Html.ActionLink(item.code, "Index", "ControlerName", new { pos = item.code.ToString(), desc = item.desc.ToString() }, null)
</td>

    }

这个actionlink给我url / ControlerName?pos = code&amp; desc = desc

有没有办法发送“desc”参数,所以它不会在网址中看到,只会在新视图中显示?

3 个答案:

答案 0 :(得分:8)

您必须像传递参数一样传递参数,以便其他控制器和视图知道正在保留的数据。

另一种方法是将您的描述存储在id可以识别的“查找表”中,这样​​您只需要传递id,它就是Controller'sViewModel's负责查看。

@Html.ActionLink(item.code, "Index", "ControllerName", new { id=1 }, null)

控制器:

public ActionResult Index(int id) {
    // Go to DB and get the description by id.
}

答案 1 :(得分:2)

不,Html.ActionLink仅用于生成网址并将其放在锚标记内。当你的指数行动被击中时,你应该重新填充你的指数值。

答案 2 :(得分:-2)

使用表单标记并将您想要的所有参数传递给actionresult,并返回任何其他actionresult(将带有您想要的url)。

razor asks for ; when doing using(Html.BeginForm())