Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.net MVC使用多个选项创建具有值的模型_Asp.net_Asp.net Mvc_Model - Fatal编程技术网

ASP.net MVC使用多个选项创建具有值的模型

ASP.net MVC使用多个选项创建具有值的模型,asp.net,asp.net-mvc,model,Asp.net,Asp.net Mvc,Model,我想创建一个具有服务属性的模型,该属性具有多个选项,可以是true,也可以是false。所以我的联络班: public class Contact { //My Properties } 我希望Contact类具有Services属性。我有一份服务清单。如何从联系人类中引用我的服务。我希望能够在我的视图中访问它,如:model.services.MyCustomService,如果可能的话。我来自javascript背景,所以这就是我的意思,但如果有帮助的话,用javascript编写

我想创建一个具有服务属性的模型,该属性具有多个选项,可以是true,也可以是false。所以我的联络班:

public class Contact
{
    //My Properties
}
我希望Contact类具有Services属性。我有一份服务清单。如何从联系人类中引用我的服务。我希望能够在我的视图中访问它,如:
model.services.MyCustomService
,如果可能的话。我来自javascript背景,所以这就是我的意思,但如果有帮助的话,用javascript编写

Javascript示例

var Contact = {
    property: "",
    services: {
        MyCustomService: "",
        MyCustomService2: "",
    }
}

要绑定到集合,只需执行以下操作:

<%@ Page Inherits="ViewPage<IList<Book>>" %>

可以在此处找到完整的解释:

在C#中,每个对象都有一个类型,因此如果要通过点符号引用
MyCustomService
MyCustomService2
,则
Services
属性必须有一个实际的类型:

class Contact {
    public ServiceContainer Services { get; set; }
}

class ServiceContainer {
    public Service1 Service1 { get; set; }
    public Service2 Service2 { get; set; }
}
然而,若容器除了存储服务(假设它是某个对象)之外并没有其他用途,那个么您可能应该将它们存储在列表或数组(按索引访问)或字典(按字符串访问)中

为了向您提供更多信息,我需要知道这些服务到底是什么,您是否希望它们的设置发生变化,它们是否有不同的类型,等等。

我将这样做:

在您的模型中:

public class Contact
{
    //My Properties

    public List<Service> Services
    {
        get;
        set;
    }
}
那么,在你看来:

@model MySite.Models.Contact

@foreach (var service in Model.Services)
{
    <text>Here's my service: @service.MyCoolProperty.ToString()</text>
}
@model MySite.Models.Contact
@foreach(Model.Services中的var服务)
{
这是我的服务:@service.mycolproperty.ToString()
}
在这个简单的示例中,我首先将Contact类的Services属性声明为
列表
。这允许您将多个服务组合到一个属性中—非常适合传递给视图

接下来,在控制器中,我使用
Add()
方法向列表中添加了一些服务。因此,在视图中,您现在可以通过
Model.Services
访问这些服务


在我看来,这似乎是解决这个常见问题的最简单方法之一。希望有帮助

我该怎么办呢。我用我的新类更新了我的问题,如何将它绑定到我的原始类。谢谢。我想我可能没有很好地解释我自己。我会重写我的问题,看看你能告诉我什么。你想绑定到模型对象集合吗?是的,我想是的。我对MVC还是个新手,正在努力掌握它和术语。每个服务都有完全相同的属性,每个服务都是只读的。它们都是相同的类型吗?如果是这样,你应该使用一个列表或字典,有点像
字典
。太好了!这很简单。谢谢你的帮助。我必须说我喜欢ASP.NET,我对它还不熟悉,学习它真是太棒了。
@model MySite.Models.Contact

@foreach (var service in Model.Services)
{
    <text>Here's my service: @service.MyCoolProperty.ToString()</text>
}