【问题标题】:Use a variable to reference a partial view's location使用变量来引用局部视图的位置
【发布时间】:2017-07-03 00:21:57
【问题描述】:

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

以下代码引发以下编译器错误:

@Html.Partial(Model.File);

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

任何帮助将不胜感激。

【问题讨论】:

  • 您的视图模型的File 属性的值是多少?这是否与有效的局部视图位置匹配?
  • @Shyju 文件属性的值取自数据库,如果我用实际值替换变量,它工作正常:“//wwwroot//static//arti//1002.cshtml "
  • 如果你把它们保存在views目录中会发生什么?有用吗?
  • 不会抛出同样的编译器错误。
  • 你试过的位置是什么?

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    只是为了补充 Lachlan Fergusson 的出色回答(谢谢!)只是说如果 您的视图的名称包含一个变量,而没有它的类型,您也会收到此消息。

    因此,以下行为我抛出了错误:

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

    ...但是当我添加它时它消失了...

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

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

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

    奇怪的是,以前(使用早期版本的 .Net Core?)原行运行良好。

    因此,将其添加到 Microsoft 的“无法真正解释问题所在的错误消息列表..”中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 2018-05-01
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多