我正在使用MVC 4,我的项目中有一些区域,每个区域都有一些视图和部分视图:
Areas
AdminArea => one area and so on
Views
Customer
Customer.cshtml => my View
_CustomerDetails.cshtml => my partial View
在我的控制器中,CustomerController我有以下代码失败:
return PartialView("_CustomerDetails", model) => fails to find my partial view.
但是,如果我打电话
return PartialView("~/Areas/AdminArea/Views/Customer/_CustomerDetails.cshtml", model)
代码成功执行。
我的观点(不是部分观点)一切正常。我甚至有一些部分视图(也在同一区域),在没有指定完整路径的情况下呈现正常,但由于某些原因,对于大多数情况,上面的代码在构造函数中失败说:
The partial view '_CustomerDetails' was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Customer/_CustomerDetails.cshtml a.s.o. ... => and is searching in global not in Admin area.
有没有办法解决这个问题,而无需在代码中指定我的PartialViews的完整路径? (就像我在.cshtml文件中那样传递area =“Admin”)。 我没有使用任何自定义ViewEngine,我在Global.asax.cs中调用了AreaRegistration.RegisterAllAreas()。
谢谢, Tamash
答案 0 :(得分:1)
我很抱歉发布这个问题: 来自控制器的调用工作正常,但问题是我从javascript调用通过操作获取PartialView而我没有指定该操作的全名。这就是为什么部分视图没有返回,因为负责返回它的方法根本没有被调用。 很抱歉:代码有点复杂,我在Ajax调用方面的细节丢失了。
答案 1 :(得分:1)
看起来很奇怪,尝试从控制器动作方法添加一个视图,即在控制器中右键单击动作方法,添加视图,使视图成为局部视图,并查看它添加的位置..检查它是否与您放置的位置相同,如果没有,有一些结构概率/错误。