如何解决ASP.NET MVC子目录
| 我还是MVC的新手,所以我希望这很简单。 我需要类别和子类别,可能需要多个层次,而且我正在尝试适当地组织我的项目。现在,我正在使用VS2008中的现成的MVC项目。 例如,假设我要导航至: http://mysite.com/Products/Electronics/Computers/Laptops 我可以通过以下方式来实现此目的:将LaptopsController放在我的Controllers目录中,在Latops目录中放入View中的各种aspx文件,并在Global.asax类中添加一行以将该特定路由映射到适当的控制器。 但是我希望有一种方法可以自动映射路线,同时在项目中保持目录结构整洁有序,因为会有很多不同的类别和产品。理想情况下,我的项目中应该有用于控制器和视图的物理目录,它们与URL路径中的“目录”相对应。但是我似乎无法做到这一点。 我看了几篇有关对路由进行重大自定义的文章,但我不希望这样做。这似乎是内置的,所以也许我只是想念一些东西。 如果您能指出正确的方向,那就太好了。解决方法
您很可能不需要
LaptopsController
,而只需ProductsController
。在这种情况下,“ 2”仅告诉“ 1”要显示的产品类别(通过路线值)。
, 如果您在路由方面遇到麻烦,请尝试Haacked路由调试器。
http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx
如果要捕获所有产品信息并获取内容,可以执行以下操作:
routes.MapRoute(\"Products\",\"products/{*params}\",new { controller = \"Product\",action = \"Details\",params= \"\" });
public ActionResult Details(string params)
{
// Split the params with \'/\' as delimiter.
string [] productParams = params.Split(\'/\');
if(productParams.Lengh > 0)
{
var category = productParams.Length > 0 ? productParams[0]: null;
var subCategory = productParams.Length > 1 ? productParams[1]: null;
var detailModel //get model information and build return..
ViewData.Model = detailModel;
Return View(\"Details\");
}
Return View(\"Error\");
//etc.
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。