首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >菜鸟MVC路由

菜鸟MVC路由
EN

Stack Overflow用户
提问于 2009-11-25 01:35:17
回答 5查看 142关注 0票数 1

我显然没有理解路由的概念--在一个实验中,我将路由设置为

代码语言:javascript
复制
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 = ""
                        }
                        );

我的索引页在Views/pc/def/en/int/Home中

当我运行它时,搜索/Home/Index.aspx时出现错误

它似乎仍然使用默认结构,而不是我更复杂的结构-我不理解的是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-25 02:06:24

因此,如果您的控制器仅以return View()return View(modelData)结尾,则相关行为:

代码语言:javascript
复制
controller = "Home",
action = "Index",

所有与上面的路由匹配的URL都将到达那里,除非您的URL是针对/pc/def/en/int/Widgets之类的内容,在这种情况下,您将路由到WidgetsController/index。

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

票数 0
EN

Stack Overflow用户

发布于 2009-11-25 01:44:19

存储站点内容的方式并不反映路由,而是由控制器和视图定义的,所以尽管您的路由很复杂,但您仍然会在主控制器上结束,所以MVC将在/ Views /home中查找适当的视图,在本例中是索引。

我发现最难理解的事情之一是把URL从处理和更重要的内容中分离出来--这是正确的,也是聪明的,但路由和结果可以完全不同的事实(在目录结构中查找内容)是,呃,有趣的(-:

作为一个实际的实验,除了将您的索引页重新定位到/views/home/index.aspx之外,什么也不做,看看这是否解决了问题……

票数 1
EN

Stack Overflow用户

发布于 2009-11-25 01:45:10

我自己也是一个新手,所以这可能是不正确的,但据我所知,视图的路径总是位于"Controller/Action“路径中。您指定的其他属性只是与请求一起提交的查询字符串值。

希望这能帮上忙。

G

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1791677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档