gpt4 book ai didi

c# - 需要具有 4 部分目录结构的 MVC3 项目示例,可能使用站点地图

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:50 25 4
gpt4 key购买 nike

我正致力于在 Visual Studio 2010 中将具有 4 级目录结构的网站转换为 MVC3。我发现的示例具有带有 {controller}/{action}/{id} 的路由。

将目录结构级别视为部分,我需要做的是处理如下所示的结构:mysite.com/{section1}/{section2}/{section3}/{section4}

每个部分都会有一个索引文件,作用与该部分和一个目录的介绍一样。我预计目前不会有任何超出第 4 节级别的网页。

我的偏好是使用 XML 站点地图,并编写一些代码块来处理该站点地图中的各种页面目录结构。我已经用 WebForms 成功地做到了这一点,但我真的想用 MVC3 来做到这一点。我缺少的重要部分是执行此操作的一个很好的工作示例。

现在我什至不能让它路由到 Section2。这是在我的 Global.asax 中。

    public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

routes.MapRoute("",
"Section1/{controller}/{action}/{id}",
new { controller = "Section1", action = "Index", id = UrlParameter.Optional }
);
}

这是在我的 Section1 Controller 中。

public class Section1Controller : Controller
{
public ActionResult Index()
{
return View();
}

public ActionResult Section2(string id)
{
return View("Section2/" + id);
}
}

我可以成功导航到 Section1(即 http://localhost:123/section1/)。但是当我进入Section2(http://localhost:123/section1/section2)时,出现这个错误:

The view 'Section2/' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/section1/Section2/.aspx ~/Views/section1/Section2/.ascx ~/Views/Shared/Section2/.aspx ~/Views/Shared/Section2/.ascx ~/Views/section1/Section2/.cshtml ~/Views/section1/Section2/.vbhtml ~/Views/Shared/Section2/.cshtml ~/Views/Shared/Section2/.vbhtml

我希望这一切都有意义。如果有更好的方法来解决这个问题,请告诉我。

我的直接问题是让它导航到每个部分(1、2、3 和 4)的索引页面,并在第 1 部分级别使用 Controller 。如果那不可能,那么解决这个问题的有效方法是什么?无论哪种方式,我都可能需要查看代码示例。

其次,有没有一种在 MVC3 网站上使用站点地图的好方法?如果是这样,我会使用什么方法?

感谢您的帮助。

最佳答案

您的路线的问题在于它位于默认路线之后。 MVC 将在第一个匹配的路由处停止,这始终是默认路由。您需要先通过声明将其移动到集合中的默认路由之上。

如果这些部分是固定的,您可以通过路由完全解决您的问题。这很容易做到。

您基于 Controller 的解决方案不起作用的原因是您试图将 id 作为 View 名称的一部分传递。它不是这样工作的。你会做这样的事情:

public ActionResult Section2(string id) 
{
return View("Section2", new { id=id });
}

您还可以创建区域,这将创建子部分,其中包含完整的 MVC 站点。区域是一项很棒的功能,但可能并非在所有情况下都是您想要的。

还有 Portable Areas,它允许您将区域分离到它们自己的程序集和它们自己的项目中。

您还可以通过使用所谓的“slug”来解析您自己的 URL,以解析 Controller 名称之后的任何内容。

关于站点地图,你可以试试这个

https://github.com/maartenba/MvcSiteMapProvider

关于c# - 需要具有 4 部分目录结构的 MVC3 项目示例,可能使用站点地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9356198/

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