Html.ActionLink() 查询字符串部分的输出值

Output values in query string part of Html.ActionLink()

我想使用 Html.ActionLink,它允许为查询字符串中使用的 name/value 对传递路由值,名称由变量定义。

@{
    var searchFieldName = ViewData["SearchFieldName"];
    var searchFieldValue = ViewData["SearchFieldValue"];
    string searchView = ViewData["ReturnSearchView"].ToString();
}


@Html.ActionLink("Search", searchView, new { searchFieldName = searchFieldValue });

我希望将 searchFieldName 替换为它的值,例如:

<a href="/search?somefield=value">

相反,查询字符串具有 "searchFieldName" 作为名称:

<a href="/search?searchFieldName=value">

如何达到预期的效果?

您可以使用 @Html.ActionLink() overload accepting a RouteValueDictionary,因此您可以使用字符串指定密钥的名称:

@{
    var searchFieldName = ViewData["SearchFieldName"];
    var searchFieldValue = ViewData["SearchFieldValue"];

    var routeValues = new RouteValueDictionary();
    routeValues.Add(searchFieldName, searchFieldValue);

    string searchView = ViewData["ReturnSearchView"].ToString();
}

@Html.ActionLink("Search", searchView, routeValues, null);