MVC3Ajax返回区域的局部视图

MVC3Ajax返回区域的局部视图,ajax,asp.net-mvc-3,razor,partial-views,Ajax,Asp.net Mvc 3,Razor,Partial Views,我试图通过ajax返回部分视图。我的代码如下所示,当局部视图不在某个区域时,它可以正常工作 [HttpPost] public ActionResult SearchLogsAjax(string searchParams) { // Do some searching return PartialView("LogResults", searchResults); } 第一次打开页面时会呈现局部视图。当我按下搜索按钮时,问题就出现了,该按钮对ActionMethod进行aja

我试图通过ajax返回部分视图。我的代码如下所示,当局部视图不在某个区域时,它可以正常工作

[HttpPost]
public ActionResult SearchLogsAjax(string searchParams)
{
    // Do some searching
    return PartialView("LogResults", searchResults);
}
第一次打开页面时会呈现局部视图。当我按下搜索按钮时,问题就出现了,该按钮对ActionMethod进行ajax调用。如果是在管理区,我得到的经典视图未找到错误

The partial view 'LogResults' was not found or no view engine supports the searched locations. The following locations were searched:

~/Views/Log/LogResults.aspx 
~/Views/Log/LogResults.ascx 
~/Views/Shared/LogResults.aspx 
~/Views/Shared/LogResults.ascx 
~/Views/Log/LogResults.cshtml 
~/Views/Log/LogResults.vbhtml 
~/Views/Shared/LogResults.cshtml 
~/Views/Shared/LogResults.vbhtml
为什么它不在当前区域的管理区域下查看? 有没有办法指定我想要的区域名称,比如
new{area=“Admin”}

另一方面,当我将鼠标移到代码中的部分视图名称上时,ReSharper会显示我所期望的视图


您可以使用与建议相同的RouteValuesDictionary参数和语法来指定所需的区域名称

new { area = "Admin" }
但对我来说,更棘手的部分是获得正确的方法签名(意味着我打算使用的签名),因为有不止两种选择,而且很容易获得错误的签名,并且语法仍然正确

在这种情况下,我认为您需要签名:

public static MvcHtmlString ActionLink(
    this AjaxHelper ajaxHelper,
    string linkText,
    string actionName,
    RouteValueDictionary routeValues,
    AjaxOptions ajaxOptions
)
因此,将您当前拥有的(您没有发布的)Ajax.ActionLink修改为如下内容:

@Ajax.ActionLink( "Link Text", "YourAction", "YourController", new { area = "YourArea" }, new AjaxOptions() { *the ajaxoptions you've been using* } )
希望有帮助