Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ASP.NET MVC中的Url路由问题_Jquery_Asp.net_Asp.net Mvc - Fatal编程技术网

Jquery ASP.NET MVC中的Url路由问题

Jquery ASP.NET MVC中的Url路由问题,jquery,asp.net,asp.net-mvc,Jquery,Asp.net,Asp.net Mvc,我试图建立一个CMS,我只需要在网站前端的两个视图,它应该像 //localhost/ => Should be Index / Home Page //localhost/any-main-page1 //localhost/any-main-page2 . . //localhost/any-main-pageN //localhost/any-main-page1?{any-length-query-string} //localhost/any-main-page1/an

我试图建立一个CMS,我只需要在网站前端的两个视图,它应该像

//localhost/  => Should be Index / Home Page

//localhost/any-main-page1
//localhost/any-main-page2
.
.
//localhost/any-main-pageN


//localhost/any-main-page1?{any-length-query-string}

//localhost/any-main-page1/any-sub-page1

//localhost/any-main-page1/any-sub-pag1e?{any-length-query-string}
主页子页子页

要求是对于任何子页面,它可以是任意数量的子页面,最少3级,最多可以是任何内容

我尝试了
path.js
,它出现在地址栏中,这将不是纯粹的SEO友好:(

我试过使用
“SlugRouteHandler()”
,但并非在所有情况下都能解决问题。

我真的需要从数据库加载URL,因为管理员将创建所有的主和子页面

数据库:

可选单

seourl是列名,数据为:
家庭、关于我们、服务、服务/网络、服务/营销等,等等。

这不仅仅是您手头上的“路由问题”。您需要一个跨越所有三层的解决方案:

  • 路由和名称解析
  • 唯一命名和段塞化名称
  • 将其存储在数据库中
每个部分实际上都是各自独立的一部分,但您的问题只能通过解决这三个部分中的每一个来解决

这是一个非常广泛的问题;为了进一步帮助您,我们需要:

  • 表结构或类结构,以及从数据库中提取的示例对象的外观
  • 名称上的约束--每个“主页”名称是否保证唯一?给定主页的每个子页是否保证唯一?给定子页的每个子页是否保证唯一?您明白了
如果您的问题特别是在路由方面,这里有一个路由可以处理它,还有一个控制器可以处理该路由:

routes.MapRoute("Page Resolution",
    "{mainPage}/{subPage}/{subSubPage}",
    new {controller = "PageController", action = "Page" }
);

routes.MapRoute("Page Resolution",
    "{mainPage}/{subPage}",
    new {controller = "PageController", action = "Page" }
);

routes.MapRoute("Page Resolution",
    "{mainpage}",
    new {controller = "PageController", action = "Page" }
);
控制器 存储库中的代码可以处理重载以查找没有子页面或子页面的页面

上面的代码被简化了,因为您还没有向我们展示任何有助于我指定的代码。在这种情况下,我选择让存储库层处理如果这些值中的任何一个是
String.Empty
;并且因为我不知道您的数据检索机制是什么,所以我无法进一步(SQLDataClient、LinqToSql、实体框架、NHibernate等)

我还假设对URL进行修饰和段塞是根据关于这个主题的另一个堆栈溢出问题来完成的

作为一般解决方案,以下是三个堆栈溢出问题,它们解决了您实际遇到的不同问题:


有没有办法解决这个路由问题?什么是“主页和子页或子页不受限制”意思是?这是否意味着页面本身的名称是无限的?或者你可以在URL中有无限的段?没错!你是对的,我不确定MVC路由,但这似乎在IIS URL重写中非常简单().也许研究一下他们的做法能帮上忙。是的,乔治!在我的数据库里都是Unique@SaheelAhmed您应该用我在解决方案中提出的问题更新您的问题,以及您希望我们解决的问题的哪一部分;现在,我可以写一本关于您需要做什么的书。我们需要查看您的代码,以便我们可以做些什么wn问题。您在存储方面有问题吗?您在检索方面有问题吗?您在URL解析方面有问题吗?如果只是在最后一部分(路由),那么我们需要查看从数据库检索到的一些对象,这些对象中包含URL段,以及它们的外观以及它们之间的具体区别。routes.MapRoute(名称:“CmsRoute”,url:“{*permalink}”,默认值:new{controller=“Page”,action=“Index”});@George,这能解决我的问题吗?
public ActionResult Page(string mainPage, string subPage, string subSubPage) 
{
    var pageRepository = new PageRepository(); //simplified. Don't do this in actual code
    var page = pageRepository.GetPage(mainPage, subPage, subSubPage);
    var pageViewModel = new PageViewModel(page);
    return View(pageViewModel); 
}