为什么我的MVC新路线不起作用?

时间:2015-11-18 03:02:17

标签: c# asp.net-mvc-4

此应用程序是vs2012模板的开箱即用的mvc4互联网应用程序。我为网址模式添加了新路由 h sports/{name}

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

            routes.MapRoute(
                "Sports",
                "sports/{name}",
                new { controller="sports", action="Find",name=UrlParameter.Optional }
                );

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

控制器主页是

public class sportsController : Controller
{
    //
    // GET: /sports/

    public ActionResult Find(string strName)
    {
        return Content("Sport looking for is: "+ strName);
    }

}

如果我请求默认主页 http:/ localhost / sports ,页面将工作并显示文本" Sport正在寻找" 。但是如果将参数传递给 url ,例如"tennis",则该参数不会传递给操作方法Find()

here is the video of what happening,我想知道为什么这不会传递参数以及如何解决这个问题?

感谢

1 个答案:

答案 0 :(得分:3)

您的路由定义参数name = UrlParameter.Optional,但您的调用方法有一个参数string strName(它们不匹配)。将方法签名更改为

public ActionResult Find(string name)