gpt4 book ai didi

asp.net-mvc - 替换没有默认路由值的默认参数绑定(bind)

转载 作者:行者123 更新时间:2023-12-01 05:17:29 30 4
gpt4 key购买 nike

我在 Controller 中有一个 Action ,例如:

public ActionResult Index(string ssn)
{
}

和默认路由值: {controller}/{action}/{id}
我不想使用像 /Home/Index?ssn=1234 这样的网址.我想使用 /Home/Index/1234 .
但我也不想为 ssn 参数(或自定义模型绑定(bind)器)添加新的路由值。

是否有一些完整的属性,如 [ActionName]但对于参数?

像这样的东西:
public ActionResult Index([ParameterBinding("id")] string ssn)
{
}

最佳答案

正如 Darin & Rumi 提到的 - 没有内置属性,但是您可以使用 RouteCollection.MapRoute 使用单个新 Route 实现相同的效果(跨多个 Controller / Action )。单个路由上的约束参数。

以下路由配置会将“SSN”路由应用于 Foo 或 Bar Controller ,任何其他 Controller 将通过默认路由。

routes.MapRoute(
name: "SSN",
url: "{controller}/{action}/{ssn}",
defaults: new { controller = "Foo", action = "Index" },
constraints: new { controller = "(Foo|Bar)", action = "Index" }
);
// default route
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

编辑:或者你可以使用 ActionParameterAlias似乎支持您最初要求的库。

关于asp.net-mvc - 替换没有默认路由值的默认参数绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18872528/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com