有没有类似于MVC视图的强类型WebForms的方法?

3
我最近刚开始接触ASP.NET MVC技术,其中我最喜欢的部分是可以使用“强类型视图”,并且当我提交数据到服务层时,只需要提交模型对象即可完成。这与我去年构建的一个相对较大的WebForms应用形成了鲜明对比。这个应用的问题在于客户需要(想要)每个表中有超过150个字段(更加令人沮丧的是字段“名称”都是数字,但这是另一件事情)。我发现自己在许多表单上都做了以下操作。
Dim bfs As New BusinessForSale

With bfs
    .123 = txt123.Text
    .124 = txt124.Text
    ''# etc
    ''# etc
    ''# 148 more bloody times
End With
''# Yes it was that frigging frustrating.

现在在MVC中,模型会为我处理所有这些内容。

那我之前的做法是完全错误的吗?有没有一种方法(虽然我永远不会回到WebForms,但只是为了自己的知识)可以提交表单“模型”到数据库,而不是像那样逐个设置每个参数?这真的是我遇到过的最痛苦的编程经历,仅仅因为它的单调乏味。


你是否可以使用对象数据源?- http://msdn.microsoft.com/zh-cn/library/9a4kyhcx.aspx - Russ Cam
2个回答

1

你基本上可以为Web表单构建这些组件;它们并不存在于现有框架中。我也有同样的想法,为什么要编写所有这些代码,当一些反射过程可以为我完成这项工作呢。我一直在试图将其纳入我的MVP框架Nucleo(http://nucleo.codeplex.com)中,并且这将是我关注的重点(甚至包括AJAX回发)。但我离题了,对于插座感到抱歉。

无论如何,您可以构建反射代码,将控件ID与类中属性的名称匹配。由于管道核心差异的存在,它可能不像在ASP.NET MVC中看到的那么自动化,但它可能只是一个方法调用,启动该过程。

希望有所帮助。


这与我想的差不多。在提交时获取控件集合(复选框、输入框、文本区等),确保它们的名称与表字段(LINQ Poco's)完全相同。然后循环遍历元素并将它们排列起来...只是不确定具体应该如何实现。此外,还需要一些机制将“模型”发送到表单以进行读取和编辑。 - Chase Florell
PS:我不太关心“插头”,不像这个网站上的其他疯子那样。如果你有什么贡献(只要你不是广告),我就说贡献吧。 - Chase Florell
当然,谢谢。基本上,您想要做的是使用某个根元素,递归地循环遍历其子元素(这就是为什么您不想从页面开始,而是从表单的某个包装器开始),并开始将ID属性与模型中的字段进行匹配,然后复制过去。 - Brian Mains

1

这篇文章可以给你一些关于如何实现类似强类型视图的想法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接