MVC3Ajax返回区域的局部视图
我试图通过ajax返回部分视图。我的代码如下所示,当局部视图不在某个区域时,它可以正常工作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
[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* } )
希望有帮助