我有一个画廊网站。那是在asp.net中开发的。现在我想将它移植到asp.net MVC5。在这样做的同时,我遇到了一个问题而没有解决它我无法进一步开发。所以这是要求:
a)每个图库都有自己独立的文件夹,里面有照片。照片库的网址为:localhost/gallery1
,localhost/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/
之后,控制器必须是对任何事物的通用控件,因此在我的示例中,网址gallery1
和gallery2
或类似的任何内容将被通用控制器捕获,可能是{{1 }}
在图库的名称之后,接下来的两个网址段将在共轭中工作。我不确定如何在通用控制器中捕获它们,然后根据GalleryController
和still
之后的内容对它们进行细分。
答案 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