2012-08-04 53 views
0

我有几个Controllers,它们都继承BaseControllerASP.NET MVC基类路由

我有一个Admin Area设置其中控制器继承BaseController。在BaseController里面有一个叫做public JsonResult DoSomething()的方法。如果这些Controllers中有一些具有定义了哪个Url.Action的视图,那么如何在基础控制器中使用Area引用来引用DoSomething()方法? FruitController的

BaseController 
FruitController : BaseController 
VegetableController : BaseController 

索引视图具有

@Url.Action("DoSomething", ???, new { area = "Admin" }) 

我不认为有与行动,只是变量构造函数的调用。我只是坚持在每个控制器中定义public JsonResult DoSomething(),而不管它在BaseController中,因为我似乎无法调用该方法。

回答

0

您在当前所在的控制器上拨打DoSomething ..因为它继承BaseController,它也会执行DoSomething操作。然而,它返回的视图必须在正确的控制器视图文件夹..否则,你将不得不明确说明视图的位置。

@Url.Action("DoSomething", "Fruit", ... 
+0

这就是我想避免的。我认为创建实际视图的过程非常费力,就像从控制器本身定义视图一样。我猜想可以使用的另一条路线就是在global.asax中定义它。我希望不要做任何这些,只是调用基本控制器,但这似乎不起作用。 – fes 2012-08-04 13:57:32

+0

你可以“打电话到基地控制器”..这就是我说的。您不必在每个控制器上定义DoSomething操作。通过从BaseController继承,它们自动执行该操作。将视图放置在视图的Base文件夹下,MVC引擎将搜索它。 – 2012-08-04 14:04:01

+0

我做了你的建议,因为我认为它也会起作用。尽管做了Base文件夹并创建了视图,但它似乎并不想打。 – fes 2012-08-04 15:12:42