У меня есть следующее представление, которое я разработал (используя VS 2010 ASP.NET MVC4) как своего рода панель мониторинга, которая имеет четыре разных частичных представления, которые она отображает для управления:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Manager.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">
AMS Utility - Manager Home Page
</asp:Content>
<asp:Content ID="Content1" ContentPlaceHolderID="FeaturedContent" runat="server">
<section class="featured">
<div class="content-wrapper">
<hgroup class="title">
<h1>AMS Utility - Property Tax Manager's Dashboard</h1>
</hgroup>
</div>
</section>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% Html.RenderAction("IndexTopImports"); %>
<% Html.RenderAction("IndexTopXfrReqs"); %>
<% Html.RenderAction("IndexBURequests"); %>
<% Html.RenderAction("IndexTopCompanyRequests"); %>
</asp:Content>
Вот одно из действий контроллера, связанных с RenderAction выше (все работают одинаково: (1) получить данные из DTO; (2) вернуть частичное представление с данными):
[ChildActionOnly]
public PartialViewResult IndexTopImports()
{
ManagersDashboardDTO importDTO = new ManagersDashboardDTO();
return PartialView("IndexTopImports", importDTO.GetImportList());
}
Вот одно из вызываемых частичных представлений (IndexTopImports.ascx). Формат для всех одинаков в том, что я передаю в представление список отображаемых данных:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<AMSUtilityMVC4.ViewModels.MgrsDashboardActiveImportsViewModel>>" %>
<h2 style="color:Green">Most Recent State Imports</h2>
<table>
<colgroup>
<col span="1", style="width:25%;">
<col span="1", style="width:35%;">
<col span="1", style="width:35%;">
</colgroup>
<tr>
<th>
State
</th>
<th>
Import Date
</th>
<th>
Imported By
</th>
</tr>
<% foreach (var item in Model) { %>
<tr>
<td>
<%: item.stateAcronym %>
</td>
<td>
<%: item.importDate %>
</td>
<td>
<%: item.importedBySOEID %>
</td>
</tr>
<% } %>
</table>
Когда я запускаю это приложение локально, оно работает нормально, но когда я загружаю его в IIS, я получаю [NullReferenceException: ссылка на объект не установлена на экземпляр объекта]. Вот трассировка стека:
[NullReferenceException: ссылка на объект не установлена для экземпляра объекта.] AMSUtilityMVC4.Models.MgrDashboardTopXfrRequestsDataContext..ctor () в C: \ Visual Studio Projects \ AMSUtilityMVC4 \ AMSUtilityMVC4 \ Models \ MgrDashboardTopXrdesignModels. Data_Transfer_Objects.ManagersDashboardDTO..ctor () в C: \ Visual Studio Projects \ AMSUtilityMVC4 \ AMSUtilityMVC4 \ Models \ Data Transfer Objects \ ManagersDashboardDTO.cs: 12 AMSUtilityMVC4.Controllers.ManagersController.IndexTopImports \ AMSUtility \ CMS \ CMS \ CMS \ IndexTopImports AMSUtilityMVC4 \ Controllers \ ManagersController.cs: 73 lambda_method (Closure, ControllerBase, Object []) +78 System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, параметры IDictionary2) +247 System.Web.Mvc.ControllerActionContextInvod (КонтроллерMvc.ControllerContextActionhodInvoc) controllerContext, ActionDescriptor, actionDescriptor, IDictionary2 параметры) +38 System. Web.Mvc.Async. ‹> C__DisplayClass39.b__33 () +124 System.Web.Mvc.Async.‹> C__DisplayClass4f.b__49 () +452 System.Web.Mvc.Async. ‹> C__DisplayClass37.b__36 (IAsyncResult) + 15 System.Web.Mvc.Async. ‹> C__DisplayClass2a.b__20 () +31 System.Web.Mvc.Async.‹> C__DisplayClass25.b__22 (IAsyncResult asyncResult) +230 System.Web.Mvc. ‹> C__DisplayClass1d asyncResult) +28 System.Web.Mvc.Async. ‹> c__DisplayClass4.b__3 (IAsyncResult ar) +20 System.Web.Mvc.Controller.EndExecuteCore (IAsyncResult asyncResult) +53 System.Web.playMvc.Async. b__3 (IAsyncResult ar) +20 System.Web.Mvc. ‹> c__DisplayClass8.b__3 (IAsyncResult asyncResult) +42 System.Web.Mvc.Async.‹> c__DisplayClass4.b__3 (IAsyncResult ar) +20Mv System. ‹Web > c__DisplayClass4.b__3 () +15 System.Web.Mvc.ServerExecuteHttpHandlerWrapper.Wrap (Func1 func) +41 System.Web.HttpServerUtility.ExecuteInternal (обработчик IHttpHandler, TextWr iter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String PhysPath, Exception error, String queryStringOverride) +1443
[HttpException (0x80004005): ошибка при выполнении дочернего запроса для обработчика System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper.] System.Web.HttpServerUtility.ExecuteInternal (IHttpHandler, обработчик виртуального пути, обработчик пути VirtualPath, средство записи пути VirtualPath, средство записи пути VirtualPath, TextWritanserve PhysPath, Exception error, String queryStringOverride) +2515 System.Web.HttpServerUtility.Execute (обработчик IHttpHandler, средство записи TextWriter, логическое значение preserveForm, логическое значение setPreviousPage) +242 System.Web.HttpServerUtilityWrapper, обработчик сценария HttpServer, обработчик текста IHttp 94 System.Web.Mvc.Html.ChildActionExtensions.ActionHelper (HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues, TextWriter textWriter) +693 System.Web.Mvc.Html.ChildActionHelperExtensions , RouteValueDictionary routeValues) + 56 ASP.views_managers_index_aspx .__ RenderContent2 (HtmlTextWriter __w, Контейнер параметров управления) в c: \ inetpub \ wwwroot \ AMSUtility \ Views \ Managers \ Index.aspx: 23 System.Web.UI.Control.RenderChildrenInternal (дочерний элемент HrittmlText) + ASP.views_shared_manager_master .__ Render__control1 (HtmlTextWriter __w, Control parameterContainer) в c: \ inetpub \ wwwroot \ AMSUtility \ Views \ Shared \ Manager.Master: 54 System.Web.UI.Control.RenderChildrenInternal (дочерние элементы HrittmlText) .Web.UI.Control.RenderChildrenInternal (средство записи HtmlTextWriter, дочерние элементы ICollection) +246 System.Web.Mvc.ViewPage.Render (средство записи HtmlTextWriter) +85 System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeleanasync.
Если не считать переписывания представления, чтобы не использовать частичные представления, я не понимаю, как решить эту проблему. Есть идеи или предложения?
<asp:
и / или содержитrunat="server"
, не разработан с использованием MVC (это устаревшие теги Webforms). Настоятельно рекомендую никогда их не использовать, они не нужны. - person Erik Philips   schedule 04.06.2014