MVC Html.ActionLink 从 URL 中删除空的查询字符串参数

Joe*_*aus 5 parameters asp.net-mvc actionlink query-string razor

我正在使用Html.ActionLink(string linkText, string actionName, object routeValues)重载将一些参数发送到操作方法..

有时我需要传递一个空参数值,如: ?item1=&item2=value

我指定的匿名类型创建,并通过作为帕拉姆routeValues,但两者nullstring.Empty导致URL省略了空item1PARAM。

new { item1 = null, item2 = "value" } 
new { item1 = string.Empty, item2 = "value" }
new { item1 = "", item2 = "value" }

// all result in:
?item2=value
Run Code Online (Sandbox Code Playgroud)

我可以手动创建 URL,但我想使用辅助方法。

建议?

hai*_*770 5

创建一个EmptyParameter类,如下所示:

public class EmptyParameter
{
    public override string ToString()
    {
        return String.Empty;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

@Html.ActionLink("Action",
                 "Controller",
                  new { item1 = new EmptyParameter(), item2 = "value" });
Run Code Online (Sandbox Code Playgroud)

  • 由于 DBNull 的 `ToString()` 实现被定义为返回 `String.Empty`,您可以选择使用 `DBNull.Value` 并避免定义 `EmptyParameter` 类。 (2认同)