0

次の問題を解決しようとしています。私はデータを格納する基本クラスを持っています。Person としましょう。新しい人物が作成されると、それらの詳細の一部のみがフォームを介して入力されます。つまり、姓、名などです。人物が DB に保存されると、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 クラスの 1 つの属性を完了する必要があります。

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 クエリを使用して必要な PersonAttribute をフェッチするだけですid == 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 に答える