2009-10-13 4 views
1

Asp.Net MVC 용 모노레일 뷰 구성 요소가 있습니까?Asp.Net Mvc 2 재사용 가능한 부품?

내가하려고하는 것은 클래스에 의존하는 복잡한 UI를 렌더링하므로, 우리는 List 뷰에 있고,이 ViewComponent에 상응하는 객체를 전달하고 객체를 매개 변수로 사용한다고 말합니다. 보기에 다른 것들을 할 수있게 해주는 복잡한 UI를 렌더링합니다. Asp.Net MVC에서이를 수행하는 가장 좋은 방법은 무엇입니까?

이것은 복잡한 UI이므로 한 번 쓰는 것을 선호하므로 템플릿은 실제로 내가 유지하고자하는 방식이 아니며 유지 관리 문제가 있음을 의미합니다. 있습니다
일부 옵션은 내가 보았다 (나는 노력을 시작하려고 해요) : 선물의

  • Html.RenderAction
  • Subcontroller

다른 일이 있는지 알고 싶습니다 그러나 또는이 특정 시나리오에 대해 다른 것보다 낫다면

답변

2

에서 많은

<% Html.RenderAction<ProductController>(c => c.RenderProductResults()); %> 

page

+0

San, Viewcomponents는 두 가지 패스 renderview를 호출하여 얻을 수없는 처리 (초기화 및 렌더링 방법). 또한, 내 생각에, 그들은 같은 목적을 달성하지 못한다. 개념이 상당히 다르다는 것을 알았다. 나는 JQuery와 UI에 대한 내 자신의 래퍼를 사용하고 있는데 그건 내 마크 업처럼 보이는 것 : <날짜 선택기 ID = "someid"날짜 = "view.SomeDate"/> 그게 RenderAction 정말 펑키 보이는 것 같아 with asp.net mvc UserControl (또는 System.Web.Control)을 사용하면 작은 구성 요소와 뷰 구성 요소를 다시 사용할 수 있지만이 솔루션은 WebForm viewengine에 연결됩니다. – smoothdeveloper

0

MVC 2 미리보기의 EditorTemplates와 DisplayTemplates를 살펴보십시오.

+0

각보기에 대한 코드를 생성하는 옵션이 있다고 생각하지 않습니다. 원하는 것은 "complexUI"를 한 번보기에 한 번 넣는 것입니다. – roundcrisis

2

RenderPartial은 어떤가요? 그건 법안에 맞는 것 같습니다.

<% Html.RenderPartial("MyPartialView", Model.Data); %> 
+1

다른 방법으로는 감사하지만 RenderAction이 더 강력하다는 것을 알았습니다. – roundcrisis

0

MvcContrib InputBuilder와 비슷한 기능을 제공합니다.

당신이 당신 자신 쓸 수 있지만 :

public static string RenderInput(this HtmlHelper html, object data, string prefix) 
{ 
    foreach (var prop in data.GetType().GetProperties()) 
    { 
     object val = prop.GetValue(data, new object[0]); 
     string name = prefix + prop.Name; 
     switch (prop.PropertyType.Name) 
     { 
      case "String": html.TextBox(name, val); break; 
      case "Guid": html.Hidden(name, val); break; 
      default: html.RenderInput(val, name + "."); break; 
     } 
    } 
} 

공지 재귀. 물론 당신은 콜렉션 지원 등을 추가해야 할 것입니다 ... switch (PropertyType) 내부 ... 그러나 이것은 그리 어렵지 않습니다. 또한 부분 속성을 렌더링하는 속성에서 UIHint를 확인할 수도 있습니다. 당신이 사용할 수있는 가능성 및 모든 제어 ;-)