我在我的应用程序中配置了这两条路线:
routes.MapRoute(
"PromotionModel-test", // Route name
"testSpecifications", // URL with parameters
new { controller = "test", action = "Brochure", modelName = "test", groupID = 0 } // Parameter defaults
);
routes.MapRoute(
"", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { groupID = 0, controller = "Home", action = "List", id = UrlParameter.Optional, CatID = 0 },
new {controller = @"\w{3,}"}
);
当我打电话
@Url.Action("Brochure", "test")
它生成的 url 是“/testSpecifications”而不是“test/Brochure”。当我明确地做
@Url.Action("Brochure", "test", new { modelName = string.Empty })
然后它将产生正确的结果。
我知道有段变量重用场景,但它在这里如何应用?幕后的逻辑是什么?
更新
我想在这里实现的是简单地生成上面的 URL,而不必显式设置任何参数值。
想象一下,您开始开发一个不需要任何参数的网站。稍后,您注意到您可能需要添加几个附加参数,在上面的示例中,添加的新参数是“modelName”。然后您的客户请求将“testSpecifications”映射到上面的特定页面。
我们绝对不想回去更新所有 Url.Action 来为它们中的每一个设置默认值。你会采取什么方法来处理这个问题?
希望这有意义....