MVC 5如何使用自定义网址或网址重写

时间:2016-06-12 22:49:25

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

我有一个画廊网站。那是在asp.net中开发的。现在我想将它移植到asp.net MVC5。在这样做的同时,我遇到了一个问题而没有解决它我无法进一步开发。所以这是要求:

a)每个图库都有自己独立的文件夹,里面有照片。照片库的网址为:localhost/gallery1localhost/gallery2等。

b)每个画廊都有两种类型的布局和选项,下面给出了commbo:

localhost/gallery1/still/grid
localhost/gallery1/still/slide
localhost/gallery1/gifs/grid
localhost/gallery1/gifs/slide

c)将[gallery1]更改为任何其他名称应该在新名称文件夹中提供照片。

d)我们还可以通过访问admin

为每个文件夹配置图库
localhost/gallery1/admin
localhost/gallery2/admin

我是MVC的新手。我不知道如何使用它......我刚刚使用带有内置示例的Visual Studio创建了一个全新的MVC5项目。任何人都可以帮我解决这个问题吗?

修改localhost/之后,控制器必须是对任何事物的通用控件,因此在我的示例中,网址gallery1gallery2或类似的任何内容将被通用控制器捕获,可能是{{1 }}

在图库的名称之后,接下来的两个网址段将在共轭中工作。我不确定如何在通用控制器中捕获它们,然后根据GalleryControllerstill之后的内容对它们进行细分。

1 个答案:

答案 0 :(得分:2)

我找到了自己问题的答案。这就是我所做的。

在RouteConfig.cs中,我只是添加了以下映射: -

routes.MapRoute(
                name: "Dynamic",
                url: "{name}/{action}/{layout}",
                defaults: 
                new { 
                       controller = "Gallery", 
                       action = "Display" , 
                       layout = UrlParameter.Optional
                });

这就是GalleryController.cs的样子:

public class GalleryController : Controller
    {
        // GET: Gallery
        public ActionResult   Display()
        {

            return View("Index");
        }

        public ActionResult Admin()
        {    
            return View();
        }


        public ActionResult Gifs()
        {
            if(Request.Url.AbsoluteUri.Contains("gifs/slide"))
                return View("GifsSlide");
            else
                return View("GifsGrid");
        }

        public ActionResult Still()
        {
            if (Request.Url.AbsoluteUri.Contains("stil/slide"))
                return View("StillSlide");
            else
                return View("StillGrid");
        }
    }

在Views中的Gallery文件夹中,我有以下.cshtml结构

Views/Gallrey/gifsgrid.cshtml
Views/Gallrey/gifsslide.cshtml
Views/Gallrey/stillgrid.cshtml
Views/Gallrey/stillslide.cshtml
Views/Gallrey/admin.cshtml

<强>成就:

localhost/gallery1/still/grid
localhost/gallery1/still/slide
localhost/gallery1/gifs/grid
localhost/gallery1/gifs/slide
localhost/gallery1/admin