在ASP.NET中显示来自多个来源的结果

时间:2018-07-25 15:17:19

标签: asp.net

好的,所以我目前正处于一个ASP.NET项目的中间,一切进展顺利。到目前为止,我已经制作了所有模型,视图和控制器,并且它们都可以完美地工作,但是现在我被告知我需要创建一个类(为了方便起见,可以称之为结果)以显示所有数据。这是一个示例,显示的结果如下:

Example of results table

此刻有多个不同的显示,用于显示不同的内容,例如人身,旅行保险,汽车保险等,并且每个不同显示之间唯一的共同之处是全名,联系电子邮件,联系电话,联系地址和记录的时间邮票。这是根据每个显示的内容而改变的附加数据,具体取决于所请求的内容,即人员显示存储的有关该人员的所有信息,例如全名,年龄,DOB,手机号码,家庭住址等,而旅行保险则显示所有存储的信息关于要问的人的旅行保险,例如旅行类型,旅行目的地,团体类型(单身/夫妇/家庭/朋友),旅行者年龄等。

我的问题是:如何创建该结果类以显示所需数据??我是否需要另一个控制器,模型和视图,还是只需要创建一个名为Result的类并放入一切都变成那个了(我想我只需要创建一个类,但是我不确定,因此我要问这个原因)。另外,我如何以这样的方式创建该类,以便根据用户搜索的内容在附加数据中显示不同的内容?就像我不需要一个人搜索他们的旅行保险时会出现的有关汽车保险的所有其他数据一样-这是否意味着我将需要多种形式的结果类,它们都引用了另一种可搜索的内容,或者所有内容都可以归为一类?

很抱歉,如果这句话措辞不佳和/或有一个不好的问题-我确实尝试过在此发表文章之前寻求一些帮助自己的内容,但找不到任何东西。对于整个ASP.NET领域,我也很陌生,因此如果我遗漏任何明显的内容,我们深表歉意。

1 个答案:

答案 0 :(得分:1)

创建一个基础Model类,并在其中显示所有通用属性,并从该类派生其他Model类,并在其中包含其特定属性。您可以将Person对象传递到需要显示Person信息的视图,将TravelInsurance对象传递到需要显示Travel Insurance信息的视图。

    public class ModelBase
    {
        public string FullName { get; set; }
        public string Email { get; set; }
        public string Phone { get; set; }
        public string Address { get; set; }
        public DateTime TimeStamp { get; set; }
    }

    public class Person : ModelBase
    {
        public string DateOfBirth { get; set; }
        public string MobileNumber { get; set; }
    }

    public class TravelInsurance : ModelBase
    {
        public string TripType { get; set; }
        public string TripDestination { get; set; }
    }

如果这听起来不可行,您可以在其中包含一个泛型Model类,其中包含一个泛型Data属性:

    public class Model<T>
    {
        public string FullName { get; set; }
        public string Email { get; set; }
        public string Phone { get; set; }
        public string Address { get; set; }
        public DateTime TimeStamp { get; set; }
        public T Data { get; set; }
    }

   public class Person
    {
        public string DateOfBirth { get; set; }
        public string MobileNumber { get; set; }
    }

    public class TravelInsurance
    {
        public string TripType { get; set; }
        public string TripDestination { get; set; }
    }

您可以在其中像这样将对象传递到视图:

    var x = new Model<Person> { FullName = "...", Data = new Person { } };

OR

    var x = new Model<TravelInsurance> { FullName = "...", Data = new TravelInsurance { } };