从控制器返回PartialViews的问题

时间:2013-09-05 13:57:56

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我正在使用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

2 个答案:

答案 0 :(得分:1)

我很抱歉发布这个问题: 来自控制器的调用工作正常,但问题是我从javascript调用通过操作获取PartialView而我没有指定该操作的全名。这就是为什么部分视图没有返回,因为负责返回它的方法根本没有被调用。 很抱歉:代码有点复杂,我在Ajax调用方面的细节丢失了。

答案 1 :(得分:1)

看起来很奇怪,尝试从控制器动作方法添加一个视图,即在控制器中右键单击动作方法,添加视图,使视图成为局部视图,并查看它添加的位置..检查它是否与您放置的位置相同,如果没有,有一些结构概率/错误。