我正在尝试将参数捕获到默认的家用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}",
但这不起作用。
答案 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上的相同模型。