2012-09-07 71 views
0

如果多次询问我,不要打我。
我见过很多关于如何使用MVC编辑实体的精彩演示。他们希望我的编辑表格只包含3个字段,这些字段当然是可编辑的,因此能够在客户端和服务器之间轮换数据,直到用户最终输入正确的值。但我的应用程序有点复杂,我需要你的建议。
1)I有具有字段名称和CreatedBy
2)只可编辑的字段为名称
3)在不正确的输入的情况下,我需要重新填充的最佳方式MVC:编辑模型,外场

不可编辑字段的实体产品

为此目的,我需要从回购中检索业务对象并将缺失值分配给生成的视图模型。可以有很多值。我应该一步一步给他们分配吗?我应该使用(尝试)UpdateModel吗?我是否应该使用像AutoMapper(从未尝试过)来指定如何通过对方更新实体?这有什么常用的方法?请在包含超过3个可编辑字段的编辑表单上进行任何比较...谢谢!

+0

我不明白当你说,“如果输入不正确,我需要用最好的方式重新填充不可编辑的字段。”这是否意味着您的不可编辑字段在视图中存储为隐藏字段?向我发送您的观点以及您希望通过表格提交或其他方式实现的目标。 – user1477388

+0

他们不存储在隐藏,但如果模型无效,那么我需要返回一个包含可编辑和不可编辑值的视图给用户。在控制器中,我只能得到可编辑的,我需要通过我的手来设置其他人。 – LINQ2Vodka

回答

0

根据您的评论,“他们不存储在隐藏,但如果模型无效,那么我需要返回一个包含可编辑和不可编辑值的视图给用户。那些,我需要通过我的手来设置别人。“以下是如何做到这一点:

<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 

如果您的ModelState是无效的,然后发送到另一个动作(或视图,如果你选择)。如果你需要创建一个单独的模型,你可以做到这一点,然后将模型发送到带有添加字段的新视图。

+0

此操作不会将要更正的输入值返回给用户。 – LINQ2Vodka

+0

您可以将模型(其中包含输入)发送到像这样的操作,返回RedirectToAction(“索引”,与{.id = company.CompanyId}一起使用)' – user1477388

+0

此处的ModelState将在呼叫后重置。此外,将会有不可取的Http 302重定向。另外,假设您有10个可编辑字段和10个不可编辑字段的编辑表单。你会把他们全部分配吗?他们将下降到URL字符串:) – LINQ2Vodka