如果被多次询问,请不要打败我
我已经看过很多关于如何使用MVC编辑实体的精彩演示。他们希望我的编辑表单只包含3个字段,这些字段当然是可编辑的,因此能够在客户端和服务器之间轮换数据,直到用户最终输入正确的值。但我的应用程序有点复杂,我需要你的建议
1)我有一个实体产品,其字段名称和CreatedBy
2)唯一可编辑的字段是名称
3)如果输入不正确,我需要以最佳方式重新填充不可编辑的字段
出于此目的,我需要从repo检索业务对象并将缺少的值分配给生成的viewmodel。可以有很多值。我应该逐步分配它们吗?我应该使用(尝试)UpdateModel吗?我应该使用像AutoMapper这样的东西(从未尝试过)来指定如何相互更新实体吗?有什么常用的方法呢?请在编辑表单上包含3个以上可编辑字段的任何liknks ...谢谢!
答案 0 :(得分:0)
根据您的评论,“它们不存储在hiddens中,但如果模型无效,那么我需要向用户返回包含可编辑和不可编辑值的视图。在控制器中我只能获得可编辑的值,我需要用手来设置别人。“以下是如何做到这一点:
<HttpPost()>
Function Create(company As Company) As ActionResult
If ModelState.IsValid Then
db.Companies.Add(company)
db.SaveChanges()
Return RedirectToAction("Index")
End If
' if model state is not valid
Return RedirectToAction("MyNewAction")
End Function
如果您的模型状态无效,则发送到另一个操作(或视图,如果您这样选择)。如果您需要创建单独的模型,则可以执行该操作,然后使用添加的字段将模型发送到新视图。