来自不同位置的HTML.RenderAction?

时间:2017-10-14 13:45:55

标签: c# html asp.net-mvc razor

我的控制器中有[ChildActionOnly] _AllLinks

如果_AllLinks.cshtml在我的Controller目录中,我可以使用RenderAction但是如果我尝试将它放在VIEWS文件夹中的不同目录中,我就不能使用它,如下所示

Html.RenderAction("_AllLinks", "Home", new { Model = Model, Area = "Core/List/" });

_AllLinks.cshtml的位置为Views/Core/Lists/

如果名为_AllLinks的PartialView位于不同的文件夹中,我如何调用Html.RenderAction?

干杯

修改

public ActionResult Index()
        {

            return View();
        }

        [ChildActionOnly]
        public ActionResult _AllLinks(List<Models.Links.MLink> Model)
        {
            return PartialView("~/Views/Core/Lists/_AllLinks", Model);
        }

2 个答案:

答案 0 :(得分:2)

是的!您可以。您需要明确指定视图的完整路径。

[ChildActionOnly]
public ActionResult _AllLinks(List<Models.Links.MLink> Model)
{
    return PartialView("~/Views/Core/Lists/_AllLinks.cshtml",Model);
}

确保使用文件扩展名为的完整路径.cshtml

此外,您应该使用与您的操作方法签名匹配的路线值来调用RenderAction。

<div>
    @{ Html.RenderAction("_AllLinks", "Home", new {model = Model}); }
</div>

答案 1 :(得分:0)

我的代码:

public PartialViewResult Language()
{
    return PartialView("Admin/Languages/_LanguageEditView");
}

_LanguageEditView位于Shared/Admin/Languages/文件夹中。我认为,Shared对于部分观点很重要。