如何实现重用创建和编辑视图的复制操作?

时间:2014-10-16 20:55:37

标签: asp.net-mvc vb.net

我想让我的用户点击现有的实体,例如Id=123,获取并复制该对象,然后让用户编辑它并使用与我相同的视图创建一个新对象#39; m用于创建或编辑。我尝试了以下操作方法:

    ' GET: /controller/copy/id
    Function Copy(ByVal id As Integer) As ActionResult
        Dim obj = db.MyTable.Find(id)
        If obj.IsNothing() Then
            Return HttpNotFound()
        End If

        'blank out the id to flag that this is a new entity
        obj.Id = 0

        'reuse the editing view
        Return View("Edit", obj)
    End Function

这很好,但表单HTML看起来像这样:

<form action="/Controller/Copy/123" method="post">

当我回发时,传递的模型对象具有Id = 123,与被复制的对象相同。我认为这一定是因为路由/Controller/Copy/123的id在第三个位置,而模型绑定看到了这个。

那么,我应该如何实现Copy以便我可以复制对象123但是然后忘记了所有关于id的问题,以避免这个问题?如果我应该使用完全不同的设计模式,那也很好。

2 个答案:

答案 0 :(得分:0)

将表单操作覆盖为""。这意味着将使用当前的URL。

答案 1 :(得分:0)

如果我理解你的权利....只需将id设置为null或在表单routeValues属性中设置为0

使用c#

的剃须刀
@using (Html.BeginForm("copy", "controller", FormMethod.Post, new { id = null /* or = 0 */ }))
// form code

在控制器中:

public ActionResult Copy(int? Id)
// action code