加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC – 如何实现可重用的用户控件和维护DRY?

发布时间:2020-12-15 22:24:03 所属栏目:asp.Net 来源:网络整理
导读:第一篇文章,请温柔:) 在ASP.NET MVC中创建用户控件时,构建代码的最佳方法是什么,调用使用用户控件的视图的控制器并不都必须了解这些控件?在ASP.NET MVC中使用用户控件时,我想知道一个维护DRY的好方法. 请注意,此问题仅与需要特殊处理和回发逻辑的用户控件有
第一篇文章,请温柔:)

在ASP.NET MVC中创建用户控件时,构建代码的最佳方法是什么,调用使用用户控件的视图的控制器并不都必须了解这些控件?在ASP.NET MVC中使用用户控件时,我想知道一个维护DRY的好方法.

请注意,此问题仅与需要特殊处理和回发逻辑的用户控件有关.对于仅用于查看的用户控件(使用RenderPartial)或者需要进行一些预处理才能创建适当的ViewModel(使用RenderAction),为创建好的DRY代码创建了好的DRY代码.

此外,此问题仅适用于在应用程序中实现可重用的控件.在这一点我不担心应用程序之间的可重用性.

给出一个具体的例子,假设我想创建一个“快速添加”用户控件,它包含三个输入字段,名字,姓氏和公司名称以及提交按钮.当使用QuickAdd功能时,应该执行以下步骤,而不管控件所在的页面如何:

>确认字段不为空,如果是,则显示一个指示符.
>执行查询到存储库,看看公司是否已经存在,如果没有;创建它.
>创建与现有公司或新创建的公司相关联的新联系人
>重新渲染现有页面.如果没有验证错误,用户将再次看到完全相同的页面,否则与验证错误的页面相同.

实现DRY的主要问题与调用包含部分视图的视图的所有控制器有关,必须具有从快速添加处理表单提交的Action方法.即使我将处理信息的逻辑分解成一个单独的控制器,并且从每个其他控制器调用该方法,似乎是一个负担,每个控制器调用具有可重用控件的视图必须具备这些知识.

我查看的另一个选项是使可重用的控件总是提交给特定的操作方法/控制器,但是该控制器无法知道如何针对调用包含的视图的特定控制器适当地重新填充模型可重复使用的控制(在步骤4).

我知道MVC 2中有一个子控制器(来自这个问题ASP.NET MVC – Contained User Controls),但是由于还没有,所以在保持DRY的同时,最大限度地构建代码以实现最大的可重用性?

是否有一个替代方法是让所有控制器调用使用可重用控件(具有上述特征)的视图,必须有一个Action方法来处理来自控件的信息?

解决方法

在你的帖子的最后,你问“有一个替代方法,必须拥有所有的控制器…必须有一个操作方法来处理来自控件的信息”

该问题的答案是编写一个自定义模型绑定器.您的自定义模型绑定器可以负责将来自表单控件的值填充到所有控制器使用的模型或属性中.通常,您要将验证与模型绑定分开,但是没有理由不能组合它们.

我强烈推荐6 Tips for ASP.NET MVC Model Binding更深入地讨论这个主题以及一些很好的参考.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读