2012-10-09 2 views
0

강력한 형식의보기에서 강력한 형식의 부분을 렌더링 할 수 있습니까?강력한 형식의보기에서 강력한 형식의 부분 표시

내가하려고 할 때 나는 다음과 같은 오류가 점점 오전 : 사전에 전달

모델 항목 유형 이다 'System.Data.Linq.Table 1[UI.Models.vwProject]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 UI.Models.ProjectStatus] . 여기

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<UI.Models.vwProject>>" %> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <div> 
    <table> 
    <tr> 
     <th> 
      Project 
     </th> 
     <th> 
      Hours 
     </th> 
    </tr> 
    <tr> 
     <td> 
      <%= Html.Encode(item.ProjectCode) %> 
     </td> 
     <td> 
      <%= Html.Encode(item.ProjectHours) %> 
     </td> 
    </tr> 

<div> 
<% Html.RenderPartial("ProjectStatus"); %> 
</div> 

</asp:Content> 

내 부분입니다 :

내가 모두에게 여기

public ActionResult Index() 
{ 
    ViewData.Model = project.vw_Projects; 
    return View(); 
} 

public ActionResult ProjectStatus() 
{ 
    ViewData.Model = project.ProjectStatus; 
    return View(); 
} 

ViewData.Model

를 사용하여 뷰를 채우는 것은 내보기입니다

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<UI.Models.ProjectStatus>>" %> 

    <table> 
     <tr> 
      <th> 
       Code 
      </th> 
      <th> 
       Status 
      </th> 
     </tr> 

    <% foreach (var item in Model) { %> 

     <tr> 
      <td> 
       <%= Html.Encode(item.ProjectCode) %> 
      </td> 
      <td> 
       <%= Html.Encode(item.ProjectStatus) %> 
      </td> 
     </tr> 

    <% } %> 

    </table> 

나는 조금입니다 강력한 형식의/동적 인 부분을 강하게 표시하는 방법과 혼동된다. 유형 또는 동적보기. 다른 사람이이 문제를 해결하도록 도와 줄 수 있습니까?

+0

는'RenderPartial'에 특정 개체를 전달할 필요가 있습니까? 그렇지 않은 경우 호출 뷰에서 모델을 가져옵니다. – TLS

+0

@TLS 예, 특정 객체를 RenderPartial에 전달해야합니다. – user793468

답변

1

부분적으로 렌더링하면 컨트롤러 동작에 영향을주지 않습니다. 기본적으로 partent의 뷰 모델을 사용하여 뷰를 렌더링합니다. 당신이 당신의 컨트롤러 액션 ProjectStatus를 호출합니다

는 당신이 필요로하는 무엇을 RenderAction 방법 :

<% Html.RenderAction("ProjectStatus"); %> 

좋은 기사에 대한 When to use RenderAction vs RenderPartial with ASP.NET MVC 예 당신이 할 수있는

+0

동적 뷰 및 부분 뷰를 사용하는 것이 적절한 경우는 언제입니까? – user793468

+1

@ user793468 주어진 문맥 없이는 일반적으로 질문에 대답하기가 어렵습니다. 다른 질문을해야 할 수도 있습니다 ... 개인적으로는 동적 뷰를 사용하지 않습니다. 강력하게 형식화 된 뷰만 사용합니다. 뷰를 렌더링 할 수있을 때 partial을 사용합니다. 컨트롤러에 별도의 코드를 추가하지 않아도됩니다. – nemesv

2

. 그러나 RenderPartial에 모델을 전달하지 않으면 뷰에서 모델을 사용하게됩니다. 그래서, 당신은 그런 식으로 뭔가를 할 필요가 :

Html.RenderPartial("ProjectStatus", new List<ProjectStatus>()); %> 
관련 문제