对象引用未设置为对象的实例 - 部分视图

时间:2012-07-10 18:39:51

标签: asp.net-mvc partial-views strongly-typed-view html.renderpartial

我有一个强类型的局部视图,当我启动主视图时,它给出了“对象引用没有设置为对象的实例”错误。我知道我还没有传递任何参数,但是有办法处理这个错误吗?

主视图:

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

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Test Form
</asp:Content>

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

<div id="partial">
<% Html.RenderPartial("DisplayPartial"); %>
</div>

</asp:Content>

部分视图:

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

<% foreach (var item in Model) {
           if (item == null) continue; %>

        <tr>            
            <td>
                <%: item.Item1%>
            </td>
            <td>
                <%: item.Item2%>
            </td>
        </tr>

    <% } %>

    </table>

2 个答案:

答案 0 :(得分:2)

您必须将一些模型传递给partialView,因为它需要IEnumerable<Student.Models.vwStudent>

的实例
<% Html.RenderPartial("DisplayPartial", model); %>

或者,如果模型不为空,您可以检查部分视图。

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


<% if (Model != null) {
     foreach (var item in Model) {
           if (item == null) continue; %>

        <tr>            
            <td>
                <%: item.Item1%>
            </td>
            <td>
                <%: item.Item2%>
            </td>
        </tr>

    <% }
} %>

    </table>

答案 1 :(得分:1)

如果你需要在没有模型的情况下渲染这个局部视图,你肯定可以在foreach循环之前测试Model不是null

if (Model != null)
    foreach (...)