2012-10-09 130 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]」 。

我既填充使用ViewData.Model

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

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

這裏的意見是我的看法:

<%@ 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> 

這裏是我的部分:

<%@ 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

如果你渲染一個partial,它不會打你控制器動作只是使用partent的視圖模型默認渲染視圖。

如果你想打電話給你的控制器動作ProjectStatus那麼你需要什麼是RenderAction方法:

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

一篇好文章關於When to use RenderAction vs RenderPartial with ASP.NET MVC

+0

何時適合使用動態視圖和偏好? – user793468

+1

@ user793468如果沒有給定的上下文,很難回答你的問題,也許你應該問一個不同的問題......我個人從來沒有使用動態視圖只有強類型的......我們使用partials當視圖可以呈現與手頭的模型並且不需要額外的代碼在控制器中運行。 – nemesv

2

當然可以。但是,如果您不將模型傳遞給RenderPartial,它將使用視圖中的模型。 所以,你需要做這樣的事情:

Html.RenderPartial("ProjectStatus", new List<ProjectStatus>()); %>