Я управляю сайтом, используя MVC 2 и .net 4.0.
Недавно я добавил на сайт новый частичный вид, который выглядит следующим образом:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<% if (!(bool)ViewData["Master_ShowGuide"] )
{ %>
<%= Html.NavigationButton("Guide", "button", "infoIcon", Url.Content("~/Help/ Guide.pdf"), new { title = "Click here to view an in depth user guide." }, new { target="_blank" })%>
<%} %>
В то время я не заметил добавления <dynamic>
части к этому представлению, где ранее мои частичные компоненты выглядели так:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
Эта часть была отображена с помощью:
<% Html.RenderPartial("SubLinks"); %>
на моей главной странице.
В моей среде разработки это работало нормально, но при развертывании на сервере я столкнулся с проблемами, когда мой ViewData["Master_ShowGuide"]
равен нулю. Я знаю, что это не тот случай, так как он отлично используется в других местах главной страницы.
Может кто-нибудь объяснить, почему это может иметь место - я «исправил» проблему, удалив тип <dynamic>
из частичного определения, но мне любопытно узнать причину.
Если это поможет, мой сайт работает в среде с другими сайтами, на которых работает MVC 3.
В качестве небольшого добавления я хотел бы отметить:
Пользователь не видит эту ошибку, он просто получает сообщение (через ELMAH).
Этот код работает нормально на моем тестовом сайте, но завершается неудачно с ошибкой нулевой ссылки на моем сайте предварительного развертывания (который находится на том же сервере, что и тестовый сайт и в настоящее время выполняется тот же код).
Я немного озадачен.
Был найден ответ на этот вопрос (относительно основной причины, по которой это происходит), но я все еще не уверен, почему удаление динамического из объявления частичного представления также «исправило бы» его. Если кто-нибудь может объяснить, мне было бы интересно услышать это.