我正在尝试解决以下问题。我有一个存储数据的基类,比如一个Person。 创建新Person时,只会通过Firstname,Lastname等表单填写其中一些详细信息。将此人保存到数据库时,也会为其分配一个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
我想知道如何才能最好地实现打开任务的能力,加载属性的文本框然后将其保存回数据库?
提前致谢!
答案 0 :(得分: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
然后你可以通过id == Task.Attribute
上的where查询获取你想要的PersonAttribute
请参阅http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/或搜索编辑器模板,了解如何将复杂列表绑定到mvc中的控制器。