我试图了解如何最好地组织在几个视图中使用的一些常见下拉列表(一些是级联)
最好是创造 单个\ Models \ CommonQueries 然后为级联情况中使用的每个下拉列表创建一个Web服务 然后有一个控制器,包含每个下拉列表的操作
这样我可以遵循DRY原则而不重复下拉逻辑,因为它们用于各种视图。
非常感谢和关心阅读我的问题并花时间。 + AB
答案 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分离问题。但是,它可能非常适合某些情况。
希望其中一种方法可以提供帮助。