基于mvc5属性的路由无法正常工作

时间:2014-11-05 12:42:51

标签: asp.net-mvc-5

我正在使用visual studio 2013并创建了一个默认的mvc项目。在家庭控制器中我修改了以下内容

 [RoutePrefix("home")]
    [Route("{action=index}")]
    public class HomeController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }

        //[Route("Home/About")]
        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }

在RouteConfig.cs中,我做了以下修改

public class 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 }
            //);
        }
    }

这不起作用。但是当我选择基于会议的路由时,它正在工作。 Plz帮助我。

1 个答案:

答案 0 :(得分:1)

制作一个web api创建一个WebApiConfig.cs:

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();
        }
    }
}
你的global.asax中的

GlobalConfiguration.Configure(WebApiConfig.Register);

然后你可以定义控制器:

[RoutePrefix("home")]
    public class HomeController : ApiController
    {
        [Route("action")]
        public string myaction()
        {
            return "hello world";
        }
    }

这样路由/ home / action将发送回定义的字符串 现在WebApi和MVC之间的最大区别在于你不使用服务器端来模板和提供视图,它主要用于REST操作:GET PUT POST DELETE 我不知道你想要实现什么,但我希望这将是有用的

修改 我想也许你忘记在global.asax中注册你的MVC路由应该有类似的调用:

GlobalConfiguration.Configure(RegisterRoutes.routes);
这样的事情 并在您的代码中尝试更改:

[RoutePrefix("Home")]
    public class HomeController : Controller
    {
        [Route("Index")]
        public ActionResult Index()
        {
            return View();
        }

        [Route("About")]
        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }

和路线应为/ Home / Index和/ Home / About