【问题标题】:Trying to route parameters to catch all index action on home controller尝试路由参数以捕获家庭控制器上的所有索引操作
【发布时间】:2019-10-01 11:50:00
【问题描述】:

我正在尝试将参数捕获到默认的家庭 mvc 控制器中,到目前为止我不需要这样做,因为 Angular 正在处理所有视图/路由。

这是因为我使用 Angular 为 SEO 设置元数据。这不起作用,因为角度纯粹是客户端。 SEO 必须来自服务器。

我的主控制器路由就是这个,现在是一个catch,所以它需要保持一个catch all但还要接收任何额外的参数

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

所以我可以像这样在 url 中捕获一些东西,即“产品”

public ActionResult Index(string product = "")
    {

        var meta = new MetaData
        {
            Title = "Test",
            Description = "Desc1",
            Keywords = ""
        };

        return View("Index",meta);
    }

我不能使用类似的东西

url: "{controller}/{action}/{id}",

因为它会期望我的其他页面的视图/控制器由 angular 处理。

所以我需要一个默认路由,只要 url 像这样,它就会使用 home 控制器

mywebsitename.com/showmen

我试过了

 url: "*./{product}",

但这是无效的。我也把路线改成了

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

但这不起作用。

【问题讨论】:

  • 我有一个解决方案,很快就会发布。

标签: asp.net angularjs model-view-controller routing


【解决方案1】:

我删除了 catch all 路由,只在主页上使用了这样的默认路由

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

没有捕获所有我不得不为其他页面添加很多这样的路线

routes.MapRoute(
            name: "LandingPage",
            url: "landingpage/{product}",
            defaults: new
            {
                controller = "Home",
                action = "Landing",
                product = UrlParameter.Optional
            }
       );

所以现在我可以使用相同的索引视图捕获产品并将元数据发送到 _Layout。同时,角度路线仍然像以前一样。

任何接收引用引用/密码的东西都使用通用路由传递给主控制器索引操作以更新_Layout上的相同模型。

【讨论】:

    猜你喜欢
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2013-01-16
    相关资源
    最近更新 更多