【问题标题】:how do you make a razor view extension method in asp.net core?你如何在asp.net核心中制作一个剃刀视图扩展方法?
【发布时间】:2019-09-09 19:30:39
【问题描述】:

我不能在剃须刀编辑器模板中调用“this.Method()”。

我曾经能够在 MVC5 中使用具有以下签名的扩展方法来做到这一点:

public static T SomeMethod<T>(this WebViewPage page) {

}

但在 asp.net core razor 视图中不再是“WebViewPage”。

我试过了,但没用:

public static T SomeMethod<T>(this RazorPage<T> page) {

}

错误是这样的:

错误 CS1929“Areas_puck_Views_Shared_EditorTemplates_PuckImagePicker”不包含“SomeMethod”的定义和最佳扩展方法重载“ViewExtensions.SomeMethod” (RazorPage&lt;PuckImagePickerEditorSettings&gt;)' 需要接收器类型 'RazorPage&lt;PuckImagePickerEditorSettings&gt;'

【问题讨论】:

  • RazorPage 存在于哪个命名空间中?你的扩展方法和你的页面使用的是同一个吗?
  • 扩展方法使用的命名空间是 Microsoft.AspNetCore.Mvc.Razor.RazorPage。我不知道如何检查视图使用的是什么,我认为它是相同的

标签: asp.net-core razor asp.net-core-mvc


【解决方案1】:

通过将扩展方法签名更改为这样解决的问题:

public static T SomeMethod<T>(this RazorPageBase page) {

}

RazorPageBase 位于 Microsoft.AspNetCore.Mvc.Razor 命名空间中。现在我可以从我的剃须刀编辑器模板中调用SomeMethodthis.SomeMethod()

当然我还在_ViewImports.cshtml 中添加了一条 using 语句来包含扩展方法。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多