2016-08-05 4 views
1

Извините, если это очевидно, но это очень запутывает для меня. Указав тип модели:ASP MVC имеет странную интерпретацию моделей - методы расширения не могут быть динамически отправлены

@model MyNamespace.MyModel 

Который не отображает сообщение об ошибке и путь к MyModel является правильным, то же самое название модели, некоторые из методов, кажется, не признают Model типа следующим образом:

@Html.Partial("_Title", Model) 

который выдает следующую ошибку:

extension methods cannot be dynamically dispatched

, который не должен быть показан, так как указан тип Model , Кроме того, если я пытаюсь бросить его снова:

@Html.Partial("_Title", (MyNamespace.MyModel)Model) 

Resharper говорит, что Cast является излишним, но ошибка уходит.

Что может вызвать это поведение в представлении MVC?

Примечание: У меня есть другие представления, которые имеют модель, определенную таким же образом и которые используют точно такие же частичные виды, но они работают правильно.

Я пробовал удалять файл и воссоздавать, и ошибки продолжают возвращаться.

+1

У вас есть @model MyNamespace.MyModel в вашем частичном представлении? –

+0

@HaHoang no, и мне не нужен один из частичного представления, поскольку он должен быть более общим, а также это не должно быть проблемой, поскольку другие представления работают правильно с теми же частичными представлениями. – meJustAndrew

+0

Возможно, вам нужно использовать пространство имен, прежде чем вы вызовете свою модель. –

ответ

1

Я не уверен, зачем вам это нужно. При вызове Partial() и не указать модель, текущая модель передается Частичное :)

Причина это происходит потому, что внутренне, когда вы передаете модель для частичного() MVC копии ток ViewData (в том числе ViewData["Model"]) и передает его на следующую частичную, если вы не укажете значение, используемое текущим значением.

+0

Это очень хороший момент, и это действительно полезно, но скажем, мне нужно отправить только часть моей модели, одного из ее свойств. Он по-прежнему генерирует ту же фальшивую ошибку, и я не знаю, как ее очистить или почему это происходит. Я не мог воссоздать это на любой другой точке зрения. Большое спасибо за вашу поддержку, это снова было очень полезно! – meJustAndrew