Asp.net mvc 5 mvc5基于属性的路由不工作
我正在使用visual studio 2013并创建了一个默认的mvc项目Asp.net mvc 5 mvc5基于属性的路由不工作,asp.net-mvc-5,Asp.net Mvc 5,我正在使用visual studio 2013并创建了一个默认的mvc项目 [RoutePrefix("home")] [Route("{action=index}")] public class HomeController : Controller { public ActionResult Index() { return View(); } //[Route("Home/
[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 }
//);
}
}
这不起作用。但当我选择基于约定的路由时,它就起作用了。请帮助我。要使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";
}
}
这样,route/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你也可以这样做,但是使用WebApi,如果你愿意的话,我可以提供示例。但是为什么不起作用呢?我真的不知道,因为我只是尝试了MVC的基本方法,不知道你可以在MVC中用属性映射路由,但是我使用了WebApi,它很容易工作