0

给定 URI /admin/article/index,为什么这个 url 映射不起作用?

"/admin/$controller/$action?/$id?"{ 
        view = "/admin/index" // no dice, ignored 
        //action = "foo" // uncommented, this is picked up 
} 

我希望所有管理控制器默认使用管理视图(并且不必在每个控制器的每个操作中呈现视图)。“/account/$controller/...”和任何其他应该使用通用视图的站点模块也是如此。

也许还有另一种方法可以实现这一点,但假设 UrlMappings 是这样做的地方......

4

1 回答 1

1

看起来你正在尝试做一些与你写的非常不同的事情。

您已经action在基本 URL 映射中映射了,并且视图是基于 自动选择的controller,因此您需要为那些没有控制器的视图定义不同的映射foo,并为具有默认操作的项目定义另一个映射. 但是,控制器上的默认操作是index,因此通常不需要在不指定控制器的情况下提供默认操作。

我认为您通常误解了 MVC 框架的工作原理。控制器不应该渲染任何东西,并且视图应该特定于控制器/动作。如果多个控制器正在呈现完全相同的视图,我愿意打赌要么控制器正在呈现 HTML,要么视图过于复杂。

您应该使用 SiteMesh 查看 Layouts,它允许您创建默认模板结构,然后通过视图更改特定内容。

于 2011-08-02T17:56:50.823 回答