2009-11-24 90 views
1

我清楚地缺少路由的概念 - 一个实验,我设置为新手MVC路由

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapRoute("Standard", 
         "{devicetype}/{devicesub}/{language}/{culture}/{controller}/{action}/{id}", 
         new 
         { 
          devicetype = "pc", 
          devicesub = "def", 
          language = "en", 
          culture = "int", 
          controller = "Home", 
          action = "Index", 
          id = "" 
         } 
         ); 

我的索引页是查看路由/ PC /高清/ EN/INT /主页

当我运行它,我得到/Home/Index.aspx

搜索错误似乎仍然使用默认的结构,而不是我的更复杂的一个 - 那我不理解?

回答

0

所以,如果你的控制器简单地结束相关线路中return View()return View(modelData)是:

controller = "Home", 
action = "Index", 

的所有网址符合上述路线将土地在那里,除非你的URL是用于像/ pc/def/en/int/Widgets之类的东西,在这种情况下,你将路由到WidgetsController/index。

这听起来像你想对同一个动作有不同的看法。如果您想要根据传递给控制器​​的参数获得不同的视图,可以这样做。当你返回你的ViewResult时,你需要明确它。你可以return View("SpecialView",model)和视图引擎将在你的控制器的视图目录中寻找SpecialView.aspx。当然,“SpecialView”可以替换为适合您的应用的字符串,并且如果它有意义的话,可以通过编程方式生成。

1

网站内容的存储方式并不反映路由,但是由控制器和视图定义,所以虽然你的路由很复杂,但你仍然在家庭控制器结束,所以MVC将会看到in/views/home获取适当的视图,在这种情况下是索引。

我发现最难处理的事情之一是URL与处理和更重要的内容分离 - 它的权利和它的聪明,但事实上,路由和结果可能是根本不同的

作为一个实际的实验,做无非搬迁您的索引页/views/home/index.aspx和看其他是否能解决: - 寻找你的目录结构的东西)是,嗯,有趣(中问题...

1

我自己有点新手,所以这可能是不正确的,但据我所知,你的意见的路径始终位于“控制器/操作”路径。您指定的其他属性仅仅是查询字符串值与请求一起提交。

希望它可以帮助...

0

为输入乡亲非常感谢 - 我想我王建宇,山西高等学校了解

如果I /家居广场的形式,它的意见确实工作 - 但大多数商业网站比2平

复杂得多

正如你可能从结构中收集到的,我尝试过的是设备类型(pc,手机,移动)和文化的不同形式,但使用单个控制器作为业务逻辑是相同的,无论风格和语言如何的演示文稿

0

欲了解更多信息

我已经将目录结构更改为Views/Home/pc/def/int并自动生成了路径,正如Jason所建议的那样,此工作正常 - 我必须更改结构,因为Views/Home似乎已添加到前端无论您在查看命令中提供的字符串如何搜索