繁体   English   中英

ASP.NET MVC-为路由模板编写更少的代码

[英]ASP.NET MVC - Write less code for route template

这是我的代码:

routes.MapRouteLowercase(
                name: "productadd",
                url: "product/add",
                defaults: new
                {
                    controller = "Product",
                    action = "Add"
                }
                    , namespaces: new[] { "project.Controllers" });
            routes.MapRouteLowercase(
                name: "productlike",
                url: "product/like",
                defaults: new
                {
                    controller = "Product",
                    action = "Like"
                }
                    , namespaces: new[] { "project.Controllers" });
            routes.MapRouteLowercase(
                name: "productshow",
                url: "product/{id}/{seoName}",
                defaults: new
                {
                    controller = "Product",
                    action = "Get",
                    id = UrlParameter.Optional,
                    seoName = UrlParameter.Optional
                }
                    , namespaces: new[] { "project.Controllers" });

我想要一种减少编写代码的解决方案,实际上是一个用于productshow的模板,另一个用于产品动作的模板

您可以在MVC中使用基于属性的路由 默认情况下,该功能在MVC5中可用,也可以作为NuGet软件包安装在MVC4中。

使用基于属性的路由,您可以在操作方法上定义属性,而不是在路由表中定义魔术字符串匹配。 您还可以执行更高级的类型检查,例如最小值和最大值,还可以选择命名路由,以便在Razor中方便引用。

举个例子:

[RoutePrefix("product")]
public class ProductController : Controller {

//route /product
[Route] 
public ActionResult Index() { ... } 

//route /product/add
[Route("add")]
public ActionResult Add() { ... }

//route /product/like
// <a href="@Url.RouteUrl("productLike")">Like</a>
[Route("like", Name="productlike")]
public ActionResult Like() { ... }

//route /product/{id}/{seoName}
[Route("{id?}/{seoName?}")]
public ActionResult Get(int? id, string seoName) { ... }

}

Saman,您可以创建一条默认路线,如下所示。 我不确定这是否适用于“ MapRouteLowercase”,您可以尝试一下。

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

如果需要,此链接具有更多选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM