为什么MVC路由中的字符串为null

时间:2014-09-30 10:24:28

标签: asp.net-mvc

我在RouteConfig中有以下内容:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapMvcAttributeRoutes();

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

UsersController中的以下ActionResult:

public ActionResult Edit(string userId)
    {
        ManageUserViewModel model = new ManageUserViewModel();
        model.UserId = userId;

        return View(model);
    }

网址是:地址/用户/编辑/ 1c557388-3570-41ad-b7b3-dc53106a908a

这会加载视图,但每次字符串userId始终为null并且我似乎无法解决原因,是否有人可以提供帮助?

2 个答案:

答案 0 :(得分:5)

用作

public ActionResult Edit(string id)

您正在id而不是userId。如果您希望userId将其更改为userId

有关详细信息,请refer

答案 1 :(得分:2)

而不是(string userId)它应该是(string id),如下所示:

public ActionResult Edit(string id)
{.....}

您的路由参数 id 而非 userId

如果您希望userId作为路由参数,请按如下所示更改路由:

routes.MapRoute(
   name: "Default",
   url: "{controller}/{action}/{userId}",
   defaults: new { controller = "Home", action = "Index", userId = UrlParameter.Optional }
);

修改: -

关于路由的好教程是herehere.