ASPMVC对模型有一个奇怪的解释——不能动态调度扩展方法



如果这很明显,很抱歉,但这让我很困惑。指定型号后:

@model MyNamespace.MyModel

它没有显示任何错误,并且到MyModel的路径是正确的,型号名称相同,一些方法似乎无法识别Model类型,如下所示:

@Html.Partial("_Title", Model)

输出以下错误:

扩展方法不能动态调度

由于指定了Model类型,因此不应显示。如果我试图再次铸造:

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

Resharper说Cast是多余的,但错误消失了。

是什么导致MVC视图出现这种行为?

注意:我还有其他视图,它们以完全相同的方式定义了模型,并且使用了完全相同的局部视图,但它们工作正常。

我已经尝试删除文件并重新创建,但错误不断出现。

我不知道你为什么需要这么做。当您调用Partial()并且没有指定模型时,当前模型将传递给Partial:(

之所以会发生这种情况,是因为在内部,当您将模型传递给Partial((时,MVC会复制当前ViewData(包括ViewData["Model"](并将其传递给下一个Partial,如果您没有指定值,则使用当前值。

最新更新