0

我正在尝试解决以下问题。我有一个存储数据的基类,比如说一个人。当一个新的人被创建时,只有其中的一些细节会通过一个表格来填写,例如名字,姓氏。当这个人被保存到数据库时,它也会被分配一个 ID。

Class Person
    Public Property ID As Integer
    Public Property Firstname As String
    Public Property Lastname As String
    Public Property Age As Integer
    Public Property Location As String
    Public Property Gender As String

我还有一个名为 Task 的类,它将控制一个人剩余属性的输入。任务分配给用户,并要求他们完成 Person 类的单个属性。

Class Task
    Public Property ID As Integer
    Public Property ParentPerson As Person
    Public Property AssignedUser As User
    Public Property Attribute As String

我想知道如何才能最好地实现打开任务、加载属性的文本框然后将其保存回数据库的能力?

提前致谢!

4

1 回答 1

0

听起来您的问题与 MVC 无关,听起来您正在寻找一种方法来获取给定匹配字符串名称的属性名称。

我相信还有其他方法可以做到这一点,但我知道的一种方法是反思。警告:我一直被告知反射是缓慢、危险的,除非必要,否则不应使用。

Type t = typeof(Person);
FieldInfo f = t.getField(Task.Attribute);
string oldValue = (string) f.GetValue(person); //gets old string given Person person
f.SetValue(person, "xx"); // sets value of person.Take.Attribute to "xx"

也许您的数据模型会像这样更好

Class Person
    Public Property ID As Integer
    Public Property Attributes As List<PersonAttribute>

Class PersonAttribute
    Public Property Id as String //FirstName, LastName, etc
    Public Property Value as String
    Public Property DisplayName as String //if you need some label for html pages

然后你可以通过 where 查询来获取你想要的 PersonAttributeid == Task.Attribute

请参阅http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/或搜索编辑器模板以了解如何绑定复杂列出到 mvc 中的控制器。

于 2011-08-11T21:53:07.730 回答