0

大师们,

我在路由数据绑定方面遇到了一个非常简单的问题。

请参考以下代码。

公共类 RemoveDashRouteHandler : MvcRouteHandler

{

    protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        requestContext.RouteData.Values["controller"] = ((string)requestContext.RouteData.Values["controller"]).Replace("-", String.Empty);

        return base.GetHttpHandler(requestContext);
    }
}

在这里我正在注册路线

路线.MapRoute (

              name: "Categorywise",
              url: "{action}-{controller}/{nm}/{p}"
              ).RouteHandler = new RemoveDashRouteHandler();

然后我做了一个像这样的简单模型

公共类参数

{
    public string nm { get; set; }
    public string p { get; set; }
}

现在的问题是,当我点击 URL 时: http://{mylocalip}:52730/Authority-cars/1/1 我总是得到所有参数 null

并且用下面的方法重写同样的效果很好。

公共 ActionResult 授权(字符串 nm,字符串 p)

    {
        ViewBag.ActionMethod = "Autority";

        return View("~/Views/Cars/Index.cshtml", new Params { nm = nm, p = p });
    }

我在做什么错。请帮忙。

提前致谢

4

1 回答 1

1

根据您定义路由的方式,无需编写自定义路由处理程序来考虑路由中的破折号。

routes.MapRoute(
                "Dash",                                              
                "{action}-{controller}/{nm}/{p}",                       
                new { controller = "Home", action = "Index" }
            );
于 2013-11-06T15:23:14.667 回答