MVC3如何最小化控制器的数量

时间:2012-03-20 14:43:38

标签: asp.net asp.net-mvc asp.net-mvc-3

我是MVC3的新手,我们的项目需要:

http://www.abc.com/product_1/product_1_subpage/ ... http://www.abc.com/product_2/product_2_subpage/ ...

现在,我有product_1作为控制器; product_1_subpage作为这个控制器的一个动作,但是,想想我有超过100种不同的产品,我不能为每个单独的产品创建超过100个控制器,我需要在这个结构上做点什么,任何想法?

非常感谢你的帮助,非常感谢任何意见。

3 个答案:

答案 0 :(得分:2)

对于所有产品,您可能只希望只有一个名为Products的Controller,而不必为每个产品添加新的控制器。

使用自定义路线或相关的默认路线,您仍然可以为各个产品生成单独的链接。此外,如果你使用你的方法为每个产品使用一个新的控制器(你真的不应该!),你每次想要添加另一个产品时都必须重新编译和部署你的应用程序 - 这将是一个要保持痛苦。

听起来你应该看一下.Net团队提供的tutorials about MVC,以便对MVC有一些基本的了解,以及如何思考它。

答案 1 :(得分:1)

使用自定义路线:

routes.MapRoute(
            "ProductsRoute", // Route name
            "products/{productName}/{subName}/{id}", // URL with parameters
            new { controller = "Product", action = "View", id = UrlParameter.Optional } // Parameter defaults
        );

这将使以下工作:

public class ProductController : Controller
{
    // http://yourweb/products/goggles/xray/Elite2000
    public ActionResult View(string productName, string subName, string id)
    {
    }
}

答案 2 :(得分:0)

如何更改url的格式以利用路由:

http://www.abc.com/product/subpage/1