2011-06-10 63 views
2

我想創建一個具有服務屬性的模型,然後該模型具有可以爲真或假的多個選項。所以我的聯繫人類別:ASP.net MVC創建帶有多個選項的值的模型

public class Contact 
{ 
    //My Properties 
} 

我希望Contact類有一個Services屬性。我有一個可用的服務列表。我如何從我的Contact類引用我的服務。我希望能夠在我的視圖中訪問它,例如:model.services.MyCustomService,如果甚至可以的話。我來自javascript背景,所以這是我的意思,但如果它有幫助,用JavaScript編寫。

JavaScript示例

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

你想要綁定到模型對象的集合嗎? – BentOnCoding 2011-06-10 21:46:49

+0

是的,我認爲是。我對MVC還是很陌生,試圖掌握它和術語 – brenjt 2011-06-10 21:48:40

+0

更新了我的答案 – BentOnCoding 2011-06-10 21:53:56

回答

2

這是我怎麼會做它:

在你的模型:

public class Contact 
{ 
    //My Properties 

    public List<Service> Services 
    { 
     get; 
     set; 
    } 
} 

在你的控制器:

public ActionResult Index() 
{ 
    var model = new Contact(); // Create model 

    // Create some sample services 
    var service = new Service(); 
    var service2 = new Service(); 

    // Add the services 
    model.Services.Add(service); 
    model.Services.Add(service2); 

    // Pass the model to the view 
    return View(model); 
} 

然後,在你的看法:

@model MySite.Models.Contact 

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

在這種簡單的例子,我第一次宣佈聯繫人類的服務屬性作爲List<Service>。這使您可以將許多服務合併到一個屬性中 - 非常適合傳遞給視圖。

接下來,在Controller中,我通過使用Add()方法向列表中添加了一些服務。因此,在查看中,您現在可以通過Model.Services訪問那些服務

對我來說,這看起來像是解決這個常見問題最簡單的方法之一。希望有所幫助!

+0

太棒了!這很簡單。謝謝你的幫助。我不得不說,我喜歡ASP.NET,我對它很陌生,它已經很棒了。 – brenjt 2011-06-11 03:12:55

0

綁定到一個集合中的所有你需要的是這樣的:

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

一個完整的解釋可以在這裏找到:

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

+0

我該如何解決這個問題。我用新的類更新了我的問題,我如何將它綁定到我的原始類。謝謝。 – brenjt 2011-06-10 21:08:33

+0

我想我可能不會很好地解釋我自己,我會重寫我的問題,看看你能告訴我什麼。 – brenjt 2011-06-10 22:21:16

2

在C#,每個對象都有一個類型,因此Services酒店,如果你想通過點符號引用MyCustomServiceMyCustomService2有一個實際類型

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

class ServiceContainer { 
    public Service1 Service1 { get; set; } 
    public Service2 Service2 { get; set; } 
} 

但是,如果容器供應不得用於其他目的,而是存儲服務(假設它是某個對象),您應該將它們存儲在一個列表或數組(按索引訪問)或字典中(按字符串訪問)。

給你更多的信息,我需要知道什麼究竟這些服務,不管你是否希望自己的一套改變,他們有不同的類型,等等

+0

每個服務將具有完全相同的屬性,並且每個服務都是隻讀的。 – brenjt 2011-06-10 23:01:35

+1

它們都是同一類型嗎?如果是這樣,你應該使用一個列表或字典,類型'Dictionary '。 – 2011-06-11 01:13:08

+0

嘿謝謝你的幫助。 – brenjt 2011-06-11 03:16:03

相關問題