.Net MVC里的View应该是运行时编译的,所以你的控件项目生产的dll应该是不包含控件的View的,问题可能就是出在这里。
我还没有进行试验所以不能确定,不过如果控件项目预编译控件的View的话,应该是一种可行的办法。
-- 参考 --
ASP.NET MVC5 视图预编译 How to Load Views from Assembly in MVC@Blueve 的答案中的第二个链接看起来的确可以解决问题,原理其实是重写了虚拟文件系统(VirtualPathProvider)来获取文件内容,这样一来即使视图文件放在哪里都无所谓了。好处是改动范围极小,副作用也很小,但坏处是视图还是在运行时编译的,应该尽可能想办法在编译DLL的时候就把视图编译了。
2015年来补充一下,
我很高兴的在最新vNext版本的http://ASP.NET MVC中发现了嵌入式资源的虚拟路径提供程序(VirtualPathProvider),这说明这个问题有望在vNext的新版本中彻底得到解决。