Asp.net mvc在路由数据绑定中处理了行为

时间:2013-11-06 15:00:39

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

大师,

路由数据绑定问题非常简单。

请参阅以下代码。

公共类RemoveDashRouteHandler:MvcRouteHandler

{

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

        return base.GetHttpHandler(requestContext);
    }
}

这就是我正在注册的路线

routes.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

重写同样的效果很好。

public ActionResult Authority(string nm,string p)

    {
        ViewBag.ActionMethod = "Autority";

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

我在做什么错。 请帮忙。

提前致谢

1 个答案:

答案 0 :(得分:1)

根据您如何定义路线,无需编写自定义路线处理程序来考虑路线中的短划线。

routes.MapRoute(
                "Dash",                                              
                "{action}-{controller}/{nm}/{p}",                       
                new { controller = "Home", action = "Index" }
            );