2010-01-28 41 views
3

现在在ASP.NET MVC中工作了几个月我开始在圈子里走动 - 我经常遇到与编辑视图相同的编辑视图。我是否应该继续放弃编辑视图并努力为创建和编辑创建一个视图?因为它们本质上是相同的,所以它们进行相同的验证,唯一的区别在于我执行更新而不是创建的控制器。我可以用一个简单的if..else语句来做到这一点 - 如果在数据存储中找到对象,则执行更新,否则执行创建。ASP.NET创建与编辑相同的视图?

您认为如何?如果我决定摆脱编辑视图,是否有可能在将来遇到问题?

澄清:

的主要问题是:能来什么样的变化/业务需求了,将需要单独创建/编辑?这实际上是我想知道的。因为如果我们有一个Page对象,例如这些属性有:Title,URL,Active等,并且要求在Create处输入这些字段,为什么我们会允许它们在编辑时出于任何原因而为空?

感谢名单

回答

3

使用一个用户控件(Form.ascx为例),并用它在这两个Create.aspx和Edit.aspx

<% using (var form = Html.BeginForm()) { 
    Html.RenderPartial("Form"); 
<% } %> 

这样,邮政正在发生的每一个连接的创建编辑控制器的方法,你也可以在两个方法中调用相同的Validation方法,并且执行相应的插入或更新。

+0

+1很好的答案。部分视图让生活变得更加轻松。有一点需要注意的是,部分应该是强类型的,所以你可以通过编辑视图来传递模型对象。 – 2010-01-28 15:54:27

+2

OP还有一件事。检查NerdDinner教程。在第111页,ScottGu准确地展示了Alex如何利用部分视图进行讨论。在这里找到教程:http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf – 2010-01-28 15:59:22

+0

这实际上是我迄今为止所做的。用Partial,但我有查看用户控制拆分 - 我的意思是Create.ascx和Edit.ascx,然后Create.aspx和Edit.aspx,它真的很烦人维护当所有对象字段是相同的。这只是复制粘贴和重命名文件,我认为这是错误的。确切地说, – mare 2010-01-28 16:22:59

0

在您的自定义视图模型,你可以传递参数如:编辑模式与目前正在使用的模式(编辑或创建),并采取differemnt行动ANME在这种模式下

1

的功能,如果它持续花费你的发展那么,我会加入他们的行列......在时机到来时与他们分道扬deal。

另外,您可能想查看一下,看看是否可以使用一些代码生成来让您的一些问题更容易一些,如果您希望将它们分开。 (我假设当你需要添加或删除一个新的领域从两个问题出现?)

+0

。当我添加或删除一个字段时,我必须对两个文件进行编辑。 – mare 2010-01-28 16:28:34

相关问题