我有一些动作的视图取决于DB的设置(例如显示文本框或不显示)。管理控制器中的设置已更改。 我想要实现的是在将更改保存到数据库之后,在管理员的侧边框(屏幕右侧)中预览已更改的视图。
有没有办法获取另一个动作的查看结果(随便返回View()),按钮(保存并预览)点击字符串(HTML)形式显示在旁边框中?
或许还有其他人有更好的想法吗?
答案 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
调用。