在.Net MVC 模式中,一般都是将view视图和controller放在同一个项目,但现在我需要将controller文件夹放到其它的项目中,要怎么配置,或要修改什么呢?如图:
我引用了NewsRelease命名空间,但还是出现
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
, new string[] { "SAM.MUI.Controllers" } //指定了命名空間
);
}
如果要关联多个命名空间,在string[]{"A","B","C",...}可以这样吗(ABC分别人命名空间)
如果是这样,那在前面也要先引入using 命名空间吗?
@韦锦业: 是的
@無限遐想: 谢谢
@無限遐想: 这个我用了,不行,我是这样用的new string[] { "NewsRelease" },也这样用过new string[] { "NewsRelease.Controllers" },还是不行
@無限遐想: 可以可以给个简单的实例呢?
@韦锦业: 你要寫類所在的全部命名空間,並且應用此collection
@無限遐想: SAM.MUI.Controllers,就是 collection所在的空間。我這個就是實例哦。
@無限遐想: 我改了,可还是不行,如果有空的可不可以远程帮下我?我的Q是753758313
@無限遐想: 因为现在这个就要用了,想快点得到解决,希望得到你的帮忙,谢谢
@無限遐想: 谁来帮远程解决,我给100豆 - -,求帮忙
@韦锦业: 我 上傳了一個簡單的project。你可以看看。但是,我不知道你怎麼看
http://www.cnblogs.com/Teco/admin/Files.aspx 這個你能看見嗎?
@無限遐想: 好像找不到你上传的,那里应该只是看自己上传的吧
@無限遐想: 帮忙发下到我的邮箱咯:753758313@qq.com,谢谢
@韦锦业: 我已经发了。同时,你也可以看这里http://www.cnblogs.com/Teco/archive/2012/03/18/2404803.html,我这个是 关于你那个问题写的哦
@無限遐想: 嗯,我收到了,但是在我这边用vs2010却加载不了web那个项目,,我的是起航版的,打开其它网上下载的项目也是没问题的,却打开你的不成功呢
@韦锦业: 可能我的 是繁体版本的问题。不过,我看看我给发的网页,一步一步操作,可以实现的 哦。
@無限遐想: 嗯,我试下,先去上课先了,先谢谢啦
@無限遐想: 那个方法我新建工程试过了,是可以的,但我借用了Ninject控件器工厂就不行了,我是想借用它的,你试过用别的控制器工厂试过没呢,找不出原因
@韦锦业: 在那个是用的工厂中,注册了吗?
@韦锦业: 如果是用了控制器。那就与这个没有关系了哦。只要在控制器注册了这个 就可以了哦。
@無限遐想: 不放在其它项目时用了Ninject是可以访问的,但添加了一个项目,也配置了命名空间,但就是访问不到,用那个控制器它的注册是这个语句的: RegisterAllControllersIn(Assembly.GetExecutingAssembly());不知与这个语句有没有关系,我想把书本上的一个例子发给你,你看能打看不,然后帮试下将控制器配在别的项目可不可以访问(那个例子是没有问题的,原码)(发到你的邮箱了)
@韦锦业: 好。我看看。
@韦锦业: 就是 RegisterAllControllersIn(Assembly.GetExecutingAssembly()); 这一句。这一句,注册collection所在的命名空间。
@無限遐想: 那怎么获取不了其它项目的呢
@韦锦业: 忘了发Ninject.dll,我发过去了
@無限遐想: 忘了发Ninject.dll,我发过去了
@韦锦业: 我運行 你給我的 代碼,可以找到collection哦
@無限遐想: 代码是可以,但我想将controller分到其它项目的(按你说的方法,引入命名空间),但访问不到了,你将controller分到其它项目了?
@韦锦业: 晚上 我給你測試一下。
@無限遐想: 嗯
@韦锦业: 可以訪問:
我的 collection命名空間是:ClassLibrary1
我這樣寫的:
protected override void OnApplicationStarted()
{
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn("ClassLibrary1");
}
正確執行。
@無限遐想: 嗯,这样可以成功,我也试过,但是你没有设置文件夹吧,我设了文件夹就不行了,在RegisterAllControllersIn("ClassLibrary1")这里面不能指定到文件夹的,"ClassLibrary1.Controller"这样,只指到"ClassLibrary1"还是出现那个错误,你试下看
@韦锦业: 這個不是指定文件夾的,對於類,是不分文件夾的。只是取決于命名空間的。
@無限遐想: 嗯,是我错了,我没将类改为public
@無限遐想: 真的非常感谢,你一直在帮我忙,太好人了*- -*
@韦锦业: 呵呵
@無限遐想: 无限遐想,有空帮我看下这个问题,谢谢(
怎么会有这种需求呢?
是我想将每个模块分开建,这样看上去更清晰
我现在是个初学者,想多偿试下,想更多地了解MVC这个框架的
@韦锦业: 大侠可不可以远程帮下呢
@韦锦业: MVC中的C和V本来就是相互关联着用的,将模块分开建没必要