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

时间:2010-01-08 03:51:14

标签: asp.net asp.net-mvc

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

但是,如果您认为下拉列表与视图有些外部/无关,那么您可能会发现使用Html.RenderAction()可以获得更清晰的结果。使用Html.RenderAction(),您可以将Action方法的结果直接输出到任何其他视图中。因此,您可以使用必要的Action方法创建1个控制器以填充这些下拉列表。例如,假设您的视图大致类似于:

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

<div id="commonDropdowns">
        <% Html.RenderAction("Create", "Dropdown"); %>
</div>

其中创建 DropdownController 中方法的名称。

例如:

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

注意:有些人不喜欢这种方法,因为它不符合典型的MVC分离问题。但是,它可能非常适合某些情况。

希望其中一种方法可以提供帮助。