ASP.net MVC使用多个选项创建具有值的模型
我想创建一个具有服务属性的模型,该属性具有多个选项,可以是true,也可以是false。所以我的联络班: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编写
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>
}