如何解决为什么我们在ASP.NET MVC中使用路由
为什么在asp.net MVC中使用自定义路由
例如
RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//Enable Routing
routes.MapMvcAttributeRoutes();
//custom route for about page
//routes.MapRoute(
// name:"about",// url: "Home/About",// defaults: new { controller = "Home",action= "About",id=UrlParameter.Optional}
// );
//custom route for contactus page
//routes.MapRoute(
// name: "about",// url: "Home/ContactUs",action = "ContactUs",id = UrlParameter.Optional }
// );
//default route
routes.MapRoute(
name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home",action = "Index",id = UrlParameter.Optional }
);
}
}
HomeController.cs
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
return View();
}
//[Route("Home/About")]
public ActionResult About()
{
return View();
}
//[Route("Home/ContactUs")]
public ActionResult ContactUs()
{
return View();
}
}
Index.cshtml
IndexPage
About.cshtml
AboutPage
Contactus.cshtml
ContactusPage
当我运行项目时,手动编写URL,然后给出输出,然后为什么使用路由属性
- 家庭/索引
- 家庭/关于
- 家庭/联系方式
我评论了路由属性和自定义路由代码,并且上面的URL给出了正确的输出,然后为什么使用路由属性
我的问题是没有路由属性可以轻松地运行该操作方法,那么为什么需要在控制器上方使用路由属性
解决方法
如果对默认路由感到满意,则无需使用路由属性,也无需在RouteConfig中放置任何自定义路由。
您可以添加路由以通过更多动态页面的参数或使页面网址更友好的方式自定义用户访问页面的方式,例如:
//make about us page url "/about"
routes.MapRoute(
name:"about",url: "about",defaults: new { controller = "Home",action= "About"}
);
//make a product page expect an id param in the url
//for example "/catalog/product/pid1"
//"/catalog/product/pid2"
//"/catalog/product/pid3"
//"/catalog/product/pid4" all match this route
routes.MapRoute(
name:"product",url: "catalog/product/{productId}",defaults: new { controller = "Catalog",action= "Product"}
);
在路由属性中可以实现相同的目的
[Route("about")]
public ActionResult AboutUs()
{
return View();
}
[Route("catalog/product/{productId}")]
public ActionResult GetProduct(string productId)
{
//Get product,build view data etc...
return View();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。