尝试路由参数以捕获家用控制器上的所有索引操作

时间:2019-05-14 12:34:46

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

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

这样做的原因是因为我使用了angular为SEO设置元数据。由于角度纯粹是客户端,因此这是行不通的。 SEO必须来自服务器。

我的家庭控制器路由就是这样,它现在是一个捕获点,因此它需要保留所有捕获点,而且还需要接收任何额外的参数

filename.py

所以我可以在url中捕获一些东西,例如'product'

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

我不能使用类似的东西

public ActionResult Index(string product = "")
    {

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

        return View("Index",meta);
    }

因为那样,我希望其他页面的视图/控制器由角度来处理。

因此,我需要一条默认路由,只要url像这样,它将使用home控制器

mywebsitename.com/showmen

我尝试了

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

但这是无效的。我也将路线更改为

 url: "*./{product}",

但这不起作用。

1 个答案:

答案 0 :(得分:0)

我删除了全部捕获路由,并在首页上使用了默认的默认路由

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。同时,弯角路线仍在做以前的事情。

任何收到quoteref / password的东西都使用通用路由,该路由传递给home控制器index操作以更新_Layout上的相同模型。