路由可空参数问题

时间:2010-01-25 12:05:28

标签: asp.net-mvc

我有一个页面,您可以在其中编辑“用户组”。我在我的控制器中有这个:

public ActionResult UsergroupEdit(int? usergroupID)

在同一视图上编辑和创建。

并在global.asa中:

 routes.MapRoute("AdminUsergroupEdit", "Admin/Usergroup/Edit/{usergroupID}",
            new
            {
                controller = "UsergroupsAdmin",
                action = "UsergroupEdit"
            }
                );

 routes.MapRoute("AdminUsergroupCreate", "Admin/Usergroup/Edit/",
            new
            {
                controller = "UsergroupsAdmin",
                action = "UsergroupEdit"
            }
                );

使用它时,它可以工作:

Html.ActionLink("Edit", "UsergroupEdit", new { usergroupID = Model.Usergroup.UsergroupID })

但是这个不匹配,这个问题是什么?

Html.ActionLink("Create", "UsergroupEdit")

如何在两种情况下都匹配?因为“UsergroupID”可以为空,但在两种情况下都应该匹配该动作吗?

/ M

1 个答案:

答案 0 :(得分:1)

使用Html.RouteLink代替Html.ActionLink

Html.RouteLink("Create", "AdminUsergroupCreate", "Create",
    new RouteValueDictionary { { "action", "UsergroupEdit" } } )

RouteLink is faster and never picks the wrong route.