使用变量引用局部视图的位置

时间:2017-07-03 00:21:57

标签: c# .net razor asp.net-core

我是asp.net核心的新手,我正在尝试在ASP.Net Core应用程序中呈现局部视图。部分视图的地址在运行时确定。我构建了一个视图模型,它从控制器解析到视图中,并包含所需的文件地址。

以下代码抛出以下编译器错误:

@Html.Partial(Model.File);
  

错误CS1973'IHtmlHelper'没有名为'Partial'的适用方法    但似乎有一个名称的扩展方法。扩展方法    无法动态调度。考虑转换动态参数或    在没有扩展方法语法的情况下调用扩展方法。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

最后的解决方案是在Razor文件中指定类型。以下一行有效:

@Html.Partial((string) Model.File)

答案 1 :(得分:0)

只是要添加Lachlan Fergusson的优秀答案(谢谢!),只是说如果您的视图的名称包含变量,那么您也会收到此消息,而不是它#39 ; s型。

所以,以下行为我提出错误:

@Html.Partial("UserDetailsPartial." + language, Model)

...但是当我加上这个时它就消失了......

@Html.Partial("UserDetailsPartial." + (string)language, Model)

在幕后,我根据语言有不同的部分,

UserDetailsPartial.es.html
UserDetailsPartial.de.html
UserDetailsPartial.fr.html

奇怪的是,以前(使用早期版本的.Net Core?)原始版本的工作正常。

所以,请将此添加到Microsoft的错误消息列表中,这些消息并不能解释问题所在。"