路由可空参数,显示空路由值的查询字符串

时间:2013-03-29 15:30:25

标签: c# asp.net-mvc-4 asp.net-mvc-routing

我有以下控制器操作:

public class Foo
{
    public ActionResult Bar(int? barId)
    {
        ...
    }
}

此操作的相应路线由:

给出
routes.MapRoute("Foobar", "bar/{barId}",
                new { controller = "Foo", action = "Bar", barId = UrlParameter.Optional },
                new { barId = @"^[0-9]+$" });

在我看来,我正在生成路线:

@Url.Action("Bar", "Foo", new { barId = bar.BarId })

对于bar.BarId = 32,我收到预期的/Foo/32

网址

但我还希望为null值生成路由:

@Url.Action("Bar", "Foo", new { barId = (int?)null })

除此之外,我收到了/Foo?barId=currentBarId

的网址

其中currentBarId是我正在查看的barId页面的Bar

我做错了什么?

1 个答案:

答案 0 :(得分:1)

更改约束:

new { barId = @"^[0-9]*$" }

这将允许此路线为空barId