【问题标题】:How to send url segment as parameter to action method?如何将 url 段作为参数发送到操作方法?
【发布时间】:2015-10-30 22:16:37
【问题描述】:

在我的 MVC Web 应用程序中,我要将所有具有恰好一个 url 段的 url 路由到相同的控制器操作。比如:

http://example.com/onePage

这是我在控制器中的操作方法:

public ActionResult SomeAction(string urlSegment)
{
...
}

现在,我希望将 url 段(如示例中的“onePage”)作为输入发送到操作方法。

你能展示 MapRoute 应该是什么样子才能实现这一点吗?

【问题讨论】:

标签: c# asp.net-mvc asp.net-mvc-routing


【解决方案1】:

它可能看起来像这样。

routes.MapRoute(
"UrlSegment", // Route name
"{urlSegment}", // URL with parameters
new { action="SomeAction",controller="ControllerName" }, // parameter defaults 
new[] { "Namespace.Controllers" } // controller namespaces);

我正在使用我的手机,所以很遗憾无法验证,但这应该可以满足您的需求。

【讨论】:

    【解决方案2】:

    您应该可以通过编辑 RouteConfig.cs 文件来做到这一点:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
        routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new { controller = "Home|Account" }
        );
    
        routes.MapRoute(
            "CustomRoute",
            "{*urlSegment}",
            new { controller = "MyController", action = "SomeAction" }
        );
    }
    

    将 MyController 更改为您的控制器的名称。

    如果您想精确匹配一个段,请删除*。

    【讨论】:

    • 如果请求正好匹配一个urlSegment,那么不应该删除那个*吗?
    猜你喜欢
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2011-04-30
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多