c# – 如何使用db查询在ASP.NET MVC 5中创建复杂的EditorTemplate?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何使用db查询在ASP.NET MVC 5中创建复杂的EditorTemplate?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1539字,纯文字阅读大概需要3分钟。
内容图文
![c# – 如何使用db查询在ASP.NET MVC 5中创建复杂的EditorTemplate?](/upload/InfoBanner/zyjiaocheng/774/ab8eeb1a9c764f6f9dc2dc47d44f5581.jpg)
我想创建一个更复杂的EditorTemplate来从列表中选择一个客户.
我知道DropDownListFor,但我想向客户展示卡片
图片和一些数据不仅仅是常规选择列表.
我想做什么:
创建一个EditorTemplate供客户选择,例如……在任何POCO类中
public class X{
[Key] int Id {get;set;}
[UIHint("CustomerSelector")] int Custumer_Id {get;set;}
}
并且“CustomerSelector”编辑器模板能够查询所有客户端并将它们显示在一个丰富的列表中.
问题是什么:
>从视图中添加查询逻辑不是一个好主意.这是针对MVC模式的.
>查询每个控制器中的客户列表并将其作为参数传递给EditorTemplate,这不是非常模块化的.
如何创建这个EditorTemplate而不会搞乱MVC模式,也不会在每个控制器中重复代码?
解决方法:
不幸的是,没有真正好的方法来处理这样的事情.您是正确的,在视图中进行数据库访问是不合适的.这不仅违反了MVC,而且还需要在视图中创建一个额外的上下文实例,而每个请求应该只有一个.
正如您所提到的,另一种方法是在控制器中执行查询,然后将其传递到视图中.老实说,这可能是你最好的选择.
我看到的另一个选择是使用儿童动作.子操作允许您限制查询用户和仅在一个位置传递到视图的逻辑.缺点是您必须手动处理字段命名,因为子操作视图的呈现将超出您正在构建的表单的范围.换句话说,你必须做的事情如下:
@Html.Action("CustomerSelect", new { fieldName = "Customer_Id" })
这也不是很理想,因为现在你已经有了一个你必须跟踪的字符串,你必须要小心实际提供正确的名称.例如,如果这是一个项集合,那么你实际上需要传递类似“MyCollection [”i.ToString()“] .Customer_Id”的内容.你可以看到这开始变得凌乱.仅仅因为这个原因,我几乎认为这是一个可能的解决方案.
最后一个选项是使用HtmlHelper扩展.这与编辑器模板存在的问题相同,因为您将不得不新建一个上下文实例,但至少在Razor视图中没有完成它的方面更好.
内容总结
以上是互联网集市为您收集整理的c# – 如何使用db查询在ASP.NET MVC 5中创建复杂的EditorTemplate?全部内容,希望文章能够帮你解决c# – 如何使用db查询在ASP.NET MVC 5中创建复杂的EditorTemplate?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。