在Html.ActionLink中包含所有查询字符串参数

时间:2012-10-29 20:43:00

标签: c# asp.net-mvc asp.net-mvc-3 query-string

在我的页面中我有

 @using (Html.BeginForm("list", "menu", FormMethod.Get))
    {
        <div>
           Show categories:
            @Html.DropDownList("groupName", (SelectList)ViewBag.groups)
            <input id="Submit1" type="submit" value="Show" />
        </div>
    }

关于用户选择我生成一个列表的选项,我的地址中的查询字符串将如下:

localhost/menu/list?groupName=controlpanel

我的问题是当我使用HtmlActionLink时:

@Html.ActionLink("Title", "List", new { foo = item.foo})

我得到的结果是:

localhost/menu/List?foo=123

而不是:

 localhost/menu/List?foo=123&groupName=controlpanel

我错过了什么吗?

2 个答案:

答案 0 :(得分:6)

它不是一个内置的解决方案,即使它似乎准确地解决了你正在寻找的东西:

ASP.NET MVC Build Url Based on Current Url

答案 1 :(得分:1)

要使用ActionLink,您需要包含要在查询字符串中显示的所有参数。我认为最简单的方法是在模型上添加GroupName属性(或者在ViewBag中添加其他样本)。然后你可以这样做:

@Html.ActionLink("Title", "List", new { foo = item.foo, groupName = Model.GroupName })