gpt4 book ai didi

.net - 我可以拥有一个使用数字作为名称的 MVC 4 Controller 吗?

转载 作者:行者123 更新时间:2023-12-01 23:48:47 25 4
gpt4 key购买 nike

很抱歉,如果这是一个完全菜鸟的问题,但我正在尝试创建特定于“年份”的 Controller 来显示内容。

当我尝试创建“2015Controller”时,它会在数字前面插入一个下划线,随后还会在 View 名称前插入一个下划线。 (不是我正在寻找的友好网址。)

也许我是个彻头彻尾的笨蛋,在这方面错过了机会,但我想将内容分成基于年份的页面显示,因为我有多年的内容,我想通过简单的方式访问网址。

最佳答案

这听起来像 XY Problem .

我可以非常肯定地说,您不应该每年都创建一个新的 Controller 。这会给您带来巨大的维护负担和臃肿的代码(您必须每年创建一个新的 Controller 和一个新的 Controller 类)。

您应该创建一小组 Controller (甚至可能只有一个),添加通过 URL 传入年份的功能,并将它们设计为根据指定年份动态加载和提供内容。

以下是您如何完成“通过 URL 传递年份”部分的方法。

将此添加为 RouteConfig.cs 中的第一个路由:

routes.MapRoute(
name: "Year",
url: "{year}/{action}/{id}",
defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional},
constraints: new{ year = @"\d{4}" });

这告诉路由模块,任何时候一个以 4 位数字开头的 URL 进来,它应该将该请求发送到 Home Controller (如果你愿意,你可以改变它),然后通过这 4 位数字作为称为 year 的路由值。

然后,在您的 HomeController 中,您可以继续将 year 添加为操作中的参数:

public ActionResult Index(string year)
{
// use year to fetch and prepare content
return View();
}

public ActionResult Schedule(string year)
{
// use year to fetch and prepare content
return View();
}

因此,如果访问者导航到 http://mydomain/2015http://mydomain/2015/Index,该请求将发送到 Index 操作,year 值为 2015。如果访问者导航到 http://mydomain/2016/Schedule,该请求将被发送到 Schedule 操作,year 值为2016

至此,您应该准备就绪。如果您想根据年份区分 View ,您可以添加多个 View ,只需将需要的值传递给 View() 帮助程序即可显示您想要的 View 。

关于.net - 我可以拥有一个使用数字作为名称的 MVC 4 Controller 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27671146/

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