我正在使用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帮助我。
答案 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