ASP.NET创建视图与编辑相同?

时间:2010-01-28 15:36:09

标签: asp.net-mvc

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

你怎么看?如果我决定摆脱编辑观点,我是否可能在将来遇到问题?

澄清:

主要问题是:可能出现哪些需要单独创建/编辑的变更/业务需求?这实际上是我想知道的。因为如果我们有一个Page对象,例如具有这些属性:Title,URL,Active等,并且要求在Create中输入这些字段,为什么我们会在Edit时出于某种原因允许它们为空?

感谢名单

3 个答案:

答案 0 :(得分:3)

使用UserControl(例如Form.ascx),并在Create.aspx和Edit.aspx中使用它

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

这样,Post就发生了每个控制器的Create Edit方法,你也可以在两个方法中调用相同的Validation方法,并进行相应的插入或更新。

答案 1 :(得分:1)

如果它一直花费你的开发时间,那么我就加入他们......当它到来的时候处理它们的分支。

此外,您可能希望查看是否可以使用某些代码生成,以便在将它们分开时更轻松地解决您的一些问题。 (我假设当你需要添加或删除两个新字段时出现问题?)

答案 2 :(得分:0)

在自定义视图模型中,您可以传递一个参数,例如:EditMode,使用您当前使用的模式(编辑或创建),并在此模式下执行不同的动作