首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ASP.NET MVC -动态类属性

ASP.NET MVC -动态类属性
EN

Stack Overflow用户
提问于 2011-08-12 01:25:48
回答 1查看 831关注 0票数 0

我正在尝试解决以下问题。我有一个存储数据的基类,比方说一个Person。当创建一个新的人员时,只有这些详细信息中的一部分将通过表单填写,即Firstname,Lastname。将人员保存到数据库时,还会为其分配一个ID。

代码语言:javascript
代码运行次数:0
运行
复制
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剩余属性的输入。将任务分配给用户,并要求他们完成Person类的单个属性。

代码语言:javascript
代码运行次数:0
运行
复制
Class Task
    Public Property ID As Integer
    Public Property ParentPerson As Person
    Public Property AssignedUser As User
    Public Property Attribute As String

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

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-12 05:53:08

听起来你的问题不是MVC的问题,听起来像是你在寻找一种方法来获得一个属性名称,并给出一个匹配的字符串名称。

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

代码语言:javascript
代码运行次数:0
运行
复制
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"

也许您的数据模型会更好,比如

代码语言:javascript
代码运行次数:0
运行
复制
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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7030212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档