ab.*_*ab. 5 asp.net asp.net-mvc
我试图了解如何最好地组织在几个视图中使用的一些常见下拉列表(一些是级联)
是否最好创建一个\ Models\CommonQueries然后为级联情况中使用的每个下拉列表创建一个Web服务,然后有一个控制器包含每个下拉列表的操作
这样我就可以遵循DRY原则而不重复下拉逻辑,因为它们在各种视图中使用.
非常感谢和关心阅读我的问题,并花时间.+ AB
当您说您的下拉菜单在多个视图中使用时,您是否仍然将这些下拉菜单视为渲染它们的视图的一部分?如果是这样,我认为使用自定义 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 关注点分离。然而,它确实非常适合某些情况。
希望这些方法之一能有所帮助。
| 归档时间: |
|
| 查看次数: |
400 次 |
| 最近记录: |