我认为编辑和创建“用户组”。我有一个“usergroup-detailsview”(Admin / Usergroup / 43),其中有2个链接:
Html.RouteLink("Edit", "UsergroupEdit",
new { usergroupID = Model.Usergroup.UsergroupID })
Html.RouteLink("Create", "UsergroupCreate")
在我的global.asax中,我得到了:
routes.MapRoute("UsergroupEdit", "Admin/Usergroup/Edit/{usergroupID}",
new { controller = "UsergroupsAdmin", action = "Edit" } );
routes.MapRoute("UsergroupCreate", "Admin/Usergroup/Edit",
new { controller = "UsergroupsAdmin", action = "Edit" } );
传递int的第一个渲染:
管理员/用户组/编辑/ 87
但第二个呈现如下:
管理员?长度= 24
我该如何解决这条路线?
/ M
答案 0 :(得分:3)
保持理智;)并保持清醒使用两条路线:
routes.MapRoute(
"UsergroupEdit",
"Admin/Usergroup/Edit/{usergroupID}",
new
{
controller = "UsergroupsAdmin",
action = "Edit"
});
routes.MapRoute(
"UsergroupCreate",
"Admin/Usergroup/Create",
new
{
controller = "UsergroupsAdmin",
action = "Create"
});
同样从代码我看到你有一个控制器名称UsergroupsAdmin ..如果你有一个Usergroups控制器的地方,你最好摆脱UsergroupsAdmin,只需用[授权动作过滤器]装饰用户组控制器中的“管理”操作。
对于授权,您可以实施自己的角色提供程序,以便在那里检查您的要求。它将保持非常干净和可维护。
如果您决定保留编辑路线,请确保只有这样的路线:
routes.MapRoute(
"UsergroupEdit",
"Admin/Usergroup/Edit/{usergroupID}",
new
{
controller = "UsergroupsAdmin",
action = Edit",
usergroupID = 0
});
并检入usergroupID = 0的控制器操作,渲染创建视图。
答案 1 :(得分:1)
你所拥有的应该工作得很好。也许你的某个地方有错字?
我只是通过将这两个调用放入HomeController中的Index.aspx视图中来尝试这个,我得到了以下输出:
<a href="/Admin/Usergroup/Edit/123">Edit</a>
<a href="/Admin/Usergroup/Edit">Create</a>
这是我的RegisterRoutes方法。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("UsergroupEdit", "Admin/Usergroup/Edit/{usergroupID}",
new { controller = "UsergroupsAdmin", action = "Edit" });
routes.MapRoute("UsergroupCreate", "Admin/Usergroup/Edit",
new { controller = "UsergroupsAdmin", action = "Edit" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
最有可能的是,您遇到了在这些路线之前定义的另一条路线的问题。
答案 2 :(得分:0)
你的控制器方法“编辑”是什么样的(方法签名)?
您使用的是int吗? datatype(一个可以为null的int)?
我通常得到整个?长度= 24的东西,当我试图映射到一个动作,并以某种方式搞砸了参数。
您还应该考虑尝试@Hacked建议重新排序全局代码中的路由。我不知道是谁在投票给那个人,但他对ASP.NET MVC了解很多。
答案 3 :(得分:0)
更改了订单,虽然没有完全解决,只是让它正常工作