【问题标题】:MVC Set view render/execution orderMVC 设置视图渲染/执行顺序
【发布时间】:2018-11-06 13:52:36
【问题描述】:

是否可以设置渲染视图的执行顺序?

假设我有一个在布局中呈现的视图,但它需要在所有其他视图之后最后呈现。 (但它不在布局的底部)

布局

<html>
    <body>
        ...
        @Html.Action("Index", "Test1")
        @Html.Action("Index", "Test2")
        ...
    </body>
</html>

控制器

public class Test1Controller: Controller
{
    private readonly PassedAround _passedAround;

    public Test1Controller(PassedAround passedAround){
        _passedAround = passedAround;
    }

    public ActionResult Index(){
        return View(_passedAround);
    }
}

public class Test2Controller: Controller
{
    private readonly PassedAround _passedAround;

    public Test1Controller(PassedAround passedAround){
        _passedAround = passedAround;
    }

    public ActionResult Index(){
        _passedAround.Whatever = 1;
        return View();
    }
}

查看(Test1Controller - 索引)

...
@Html.Raw(Model.Whatever)
...

在上面的示例中,PassedAround.Whatever 的值是在渲染 Test1Controller-Index 之后设置的。

【问题讨论】:

  • 似乎是XY Problem 的情况,因为您的问题似乎仍然不合逻辑(对我来说)....您要完成什么?你能分享你的布局以及你想用它做什么吗?
  • 这不合逻辑。客户端要求我在请求期间传递一个对象,并且“有时”根据我们所在的(部分)控制器更改它。在执行所有控制器之后,应该呈现最后一个视图,具体取决于所有以前的控制器.这样做不是我的想法......但我只需要知道是否有可能......如果可以,如何。
  • 您确实需要包含一些示例代码,以便任何人都能理解您的意思。发布 Minimal, Complete, and Verifiable example (MCVE) 来证明您的问题将帮助您获得更好的答案。

标签: asp.net-mvc view controller action


【解决方案1】:

您不渲染控制器,而是在 MVC 中渲染视图。母版页的概念也是指 MVC 中的布局视图,它位于共享文件夹中。你的问题有点混乱。

【讨论】:

  • 不知道为什么你被否决了。我同意你的看法;正如最初提出的问题一样,您给出了一个很好的答案。问题的作者似乎将 WebForms 概念与 MVC 概念混淆了,或者正在使用与问题相关的混合环境。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多