如何在不同的Controller或Action中获取任何Action的渲染视图?

时间:2015-01-14 14:49:20

标签: asp.net-mvc asp.net-mvc-4 razor razor-2

我有一些动作的视图取决于DB的设置(例如显示文本框或不显示)。管理控制器中的设置已更改。 我想要实现的是在将更改保存到数据库之后,在管理员的侧边框(屏幕右侧)中预览已更改的视图。

有没有办法获取另一个动作的查看结果(随便返回View()),按钮(保存并预览)点击字符串(HTML)形式显示在旁边框中?

或许还有其他人有更好的想法吗?

1 个答案:

答案 0 :(得分:3)

是。他们称之为儿童行为。简单地说,您只需通过Html.Action调用要呈现的操作:

@Html.Action("SomeAction", "SomeController")

但是,要记住几件事情。首先,您的孩子行动应该返回PartialView。否则,您将在调用操作的位置再次获得完整的布局。如果要对常规视图和子操作使用相同的操作。您可以分支您的回报:

if (ControllerContext.IsChildAction)
{
    return PartialView();
}

return View();

其次,如果您只返回PartialView,则该行动不应该直接路由到。否则,有人可以在他们的浏览器中输入一个URL来转到这个子动作,只返回部分视图,没有布局。您可以使用ChildActionOnly属性阻止此操作:

[ChildActionOnly]
public ActionResult MyAwesomeChildAction()
{
    ...
}

然后,此操作只能通过Html.Action调用。