MVC - 如何在许多视图中最好地组织常用的下拉列表

ab.*_*ab. 5 asp.net asp.net-mvc

我试图了解如何最好地组织在几个视图中使用的一些常见下拉列表(一些是级联)

是否最好创建一个\ Models\CommonQueries然后为级联情况中使用的每个下拉列表创建一个Web服务,然后有一个控制器包含每个下拉列表的操作

这样我就可以遵循DRY原则而不重复下拉逻辑,因为它们在各种视图中使用.

非常感谢和关心阅读我的问题,并花时间.+ AB

Chr*_*inn 2

当您说您的下拉菜单在多个视图中使用时,您是否仍然将这些下拉菜单视为渲染它们的视图的一部分?如果是这样,我认为使用自定义 HTML 帮助器或部分视图 (ascx) 是合适的。然后,就像您建议的那样,您可以使用域层中的通用服务填充下拉列表的数据。我认为这是一个非常合理的做法。

但是,如果您觉得下拉菜单在某种程度上与视图外部/无关,那么您可能会发现使用 Html.RenderAction() 会给您带来更清晰的结果。使用 Html.RenderAction(),您可以将 Action 方法的结果直接输出到任何其他视图中。因此,您可以使用必要的操作方法创建 1 个控制器来填充这些下拉列表。例如,假设您有一个大致类似于以下内容的视图:

<div>
    <div id="coreView1">
        <!-- some view code here -->
    </div>
</div>

<div id="commonDropdowns">
        <% Html.RenderAction("Create", "Dropdown"); %>
</div>
Run Code Online (Sandbox Code Playgroud)

其中Create是DropdownController中方法的名称。

例如:

public class DropdownController : Controller
{
    public ViewResult Create()
    {
        // do stuff here to create the ViewResult of the common Dropdowns
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:有些人不喜欢这种方法,因为它不符合典型的 MVC 关注点分离。然而,它确实非常适合某些情况。

希望这些方法之一能有所帮助。