我想让我的用户点击现有的实体,例如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的问题,以避免这个问题?如果我应该使用完全不同的设计模式,那也很好。
答案 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