在MVC4中定制自定义/动态路由

时间:2015-02-15 23:10:37

标签: asp.net-mvc-4 routes

我正在尝试弄清楚如何为包含URL中的变量段的URL创建MapRoute。例如:

https://myapp.net/myapp/resource/ {ID} / subRescource / {ID}

所以...资源的“id”和子资源的“id”最终应该作为调用的参数,无论是GET,POST,PUT还是DELETE。

我无法弄清楚如何为此设置地图路线,并且我无法找到任何解决此类网址的示例(路径中不同级别的ID)。

是否有一个“简单”的答案 - 只是说明地图应该是什么样子?或者是否存在任何人都知道的在线示例?

谢谢,

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

MapRoute:

routes.MapRoute(
    name: "SubResource",
    url: "myapp/resource/{id}/subResource/{subResourceId}",
    defaults: new { controller = "SubResource", action = "GetSubResource", id = UrlParameter.Optional, subResourceId = UrlParameter.Optional });

SubResource Controller:

public class SubResourceController
{
    [HttpGet]
    public SubResourceModel GetSubResource(long id, long subResourceId)
    {
        // Do something
        return result;
    }

    [HttpPost]
    public SubResourceModel AddSubResource(long id, [FromBody]subResourceModel)
    {
        // Do something
        return result;
    }

    [HttpPut]
    public SubResourceModel UpdateSubResource(long id, long subResourceId)
    {
        // Do something
        return result;
    }

    [HttpDelete]
    public bool DeleteSubResource(long id, long subResourceId)
    {
        // Do something
        return result; 
    }
}

有关ASP.NET路由的更多信息: https://msdn.microsoft.com/en-us/library/cc668201.aspx