Ссылка на объект не установлена для экземпляра объекта - частичное представление
У меня есть строго типизированное частичное представление, которое выдает мне ошибку "Ссылка на объект не установлена на экземпляр объекта" при запуске основного представления. Я знаю, что пока не передаю никаких параметров, но есть ли способ справиться с этой ошибкой?
Master View:
<%@ 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 ответа
Решение
Если вам нужно визуализировать это частичное представление, когда у вас нет модели, вы, безусловно, можете проверить, что модель не равна нулю перед циклом foreach
if (Model != null)
foreach (...)
Вы должны передать некоторую модель вашему частичному представлению, потому что для этого нужен экземпляр 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>