gpt4 book ai didi

asp.net-mvc-3 - 如何根据当前页面 (MVC3/Razor) 动态注入(inject)部分 View (或代码)?

转载 作者:行者123 更新时间:2023-12-01 11:02:27 25 4
gpt4 key购买 nike

我无法就我的问题得到明确的答案:我想要一个局部 View ,但局部 View 中有 3 个不同的代码块,内容相似(不完全相同)。因此,无论加载什么 View 页面,都将决定在局部 View 中显示 3 个代码块中的哪一个。

我在 MVC2 中做了类似的事情,但它是在 Controller 级别( Controller 决定显示 3 个代码块中的哪一个)。现在我需要更深入地在页面级别进行。

我明白在一个 View 中一堆 if/else 语句不是 MVC 约定。但老实说,这是我知道该怎么做的唯一方法。另一种方法是保留此 if/else 逻辑并创建多个 Controller 并继续以旧方式进行。

谁能指出我正确的方向?

最佳答案

至少有 4 种方法可以做到这一点。

  1. If/Else,就像@StanK 提到的
  2. 从主视图调用子操作。将逻辑构建到 Action 中,以根据所述逻辑呈现不同的部分。
  3. 创建一个自定义的 HTML 帮助程序,它通过在呈现不同的部分之前检查您的自定义逻辑来扩展 @Html.Partial(本质上是将 if/else 移动到 HTML 帮助程序)
  4. 为您的模型添加一些 OO。为 3 个“相似但不同”的代码块中的每一个创建一个抽象类和一个派生类,并为每个代码块创建一个匹配的编辑器模板。然后在您的主视图中,调用 @Html.EditorFor(model => model.SomethingDeclaredAbstract),MVC 将选择正确的模板。

很难就哪一个给出建议,因为您没有提供太多代码,也没有说明这 3 个内容有何不同。

我通常选择选项 4,因为它最干净且用途最广。

关于asp.net-mvc-3 - 如何根据当前页面 (MVC3/Razor) 动态注入(inject)部分 View (或代码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9474347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com