2011-06-10 2 views
2

서비스의 속성을 가진 모델을 만들고 싶습니다. 그러면 여러 옵션이 true 또는 false가 될 수 있습니다. 그래서 내 연락처 클래스 :ASP.net MVC는 여러 옵션을 사용하여 값이있는 모델을 만듭니다.

public class Contact 
{ 
    //My Properties 
} 

연락처 클래스에 서비스 속성이 있어야합니다. 사용할 수있는 서비스 목록이 있습니다. 연락처 클래스에서 내 서비스를 참조하려면 어떻게해야합니까? 내보기에서 같이 액세스 할 수있게하고 싶습니다 : 심지어 가능하면 model.services.MyCustomService. 나는 자바 스크립트 배경에서 왔으니 이것이 의미하는 바이지만 자바 스크립트로 작성하면 도움이된다.

자바 스크립트 예

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

모델 개체의 컬렉션에 바인딩하려고합니까? – BentOnCoding

+0

예, 그렇게 생각합니다.나는 MVC에 아직 익숙하지 않으며 그것에 대한 이해를 얻으려고 노력하고있다. – brenjt

+0

내 대답을 업데이트했다. – BentOnCoding

답변

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>로 상대 클래스의 서비스 속성을 선언했다. 따라서 여러 서비스를 하나의 속성으로 결합하여보기에 전달할 수 있습니다.

다음으로 컨트롤러에서 Add() 메서드를 사용하여 일부 서비스를 목록에 추가했습니다. 따라서보기에서 이제 을 통해 Model.Services을 통해 해당 서비스에 액세스 할 수 있습니다.

저에게는 이것이 일반적인 문제에 접근하는 가장 간단한 방법 중 하나처럼 보입니다. 희망이 도움이!

+0

좋아요! 그것은 매우 간단합니다. 도와 줘서 고마워. 나는 내가 ASP.NET에 익숙하지 않다는 것을 말해야 만한다. – brenjt

0

는 당신이 필요로하는 모든이있는 컬렉션에 바인딩하려면 :

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

완전한 설명은 여기에서 찾을 수 있습니다 :

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

+0

나는 이것에 관해 어떻게 갈 수 있는가? 새 클래스로 내 질문을 업데이트하여 원래 클래스에 바인딩하는 방법을 설명합니다. 감사. – brenjt

+0

나는 내 자신을 아주 잘 설명하지 못했을 것이다. 나는 내 질문을 다시 쓰고 내가 무엇을 말할 수 있는지 보게 될 것이다. – brenjt

2

에서 컨테이너가 다른 목적을 위해 제공하는 경우

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

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

그러나, 저장 것이 아니라 : C#을, 모든 객체 유형이 너무 Services 속성은이 점 표기법을 통해 MyCustomServiceMyCustomService2를 참조 할 경우 실제 유형을 가지고 있음 서비스 (일부 객체라고 가정)를 사용하면 목록 또는 배열 (색인에 의한 액세스) 또는 사전 (문자열에 의한 액세스)에 저장해야합니다.

하는

당신에게 더 많은 정보를 제공하기 위해, 나는 정확히이 서비스는 등, 자신의 설정 변경 예상 서로 다른 유형이 할 수 있는지, 무엇 을 알아야합니다

+0

각 서비스는 똑같은 속성을 가지며 각 서비스는 읽기 전용입니다. – brenjt

+1

모두 같은 유형입니까? 그렇다면'Dictionary '일종의 목록이나 사전을 사용해야합니다. –

+0

도움을 주셔서 감사합니다. – brenjt

관련 문제