即使在视图导入中注册,TagHelper也无法正常工作

时间:2020-08-14 19:24:34

标签: c# asp.net-core

即使我以以下方式注册了我的标签帮助程序,也无法在HTML帮助程序下找到它。一旦我做@Html。它应该出现,但事实并非如此,比如sql intellence需要以某种方式重新加载?

_ViewImports

如下所述

@using MISSystem.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using Microsoft.AspNetCore.Mvc.Localization
@using SharedResourceLib.Lng;

@inject ISharedResource SharedResource
@addTagHelper *, Localization.AspNetCore.TagHelpers
@inject IViewLocalizer Localizer
@addTagHelper *, LazZiya.TagHelpers
@addTagHelper *,MISSystem.Web.Helpers
@addTagHelper *,MISSystem.Web

@using static Microsoft.AspNetCore.Mvc.Razor.RazorPage;
@using Microsoft.AspNetCore.Identity
@using System.Security.Claims

这是我的助手方法

namespace MISSystem.Web.Helpers {
public static class GravatarHelper {
    public static HtmlString GravatarImage(this HtmlHelper htmlHelper, string emailAddress, GravatarOptions options = null) {
        if (options == null)
            options = GravatarOptions.GetDefaults();

        var imgTag = new TagBuilder("img");

        emailAddress = string.IsNullOrEmpty(emailAddress) ? string.Empty : emailAddress.Trim().ToLower();

        if (!string.IsNullOrEmpty(options.CssClass)) {
            imgTag.AddCssClass(options.CssClass);
        }

        imgTag.Attributes.Add("src", string.Format("http://www.gravatar.com/avatar/{0}?s={1}{2}{3}",
                GetMd5Hash(emailAddress),
                options.Size,
                "&d=" + options.DefaultImageType,
                "&r=" + options.RatingLevel
            )
        );

        return new HtmlString(imgTag.ToString(TagRenderMode.SelfClosing));
    }

    // Source: http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5.aspx
    private static string GetMd5Hash(string input) {
        byte[] data = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(input));
        var sBuilder = new StringBuilder();
        for (int i = 0; i < data.Length; i++) {
            sBuilder.Append(data[i].ToString("x2"));
        }
        return sBuilder.ToString();
    }
}
}

这就是我尝试使用帮助程序的方式

@Html.GravatarHelper(User.Identity.GetUserName();, new GravatarOptions { Size = 30, CssClass = "img-circle" })

我面临的错误是

严重性代码描述项目文件行抑制状态 错误CS1061'IHtmlHelper'不包含以下定义 'GravatarHelper',并且没有可访问的扩展方法'GravatarHelper' 接受类型为“ IHtmlHelper”的第一个参数可能是 找到(您是否缺少using指令或程序集 参考?)MISSystem.Web Views \ Shared_AdminLteLayout.cshtml 104活动

1 个答案:

答案 0 :(得分:0)

我需要做的是如下更改我的方法签名。一旦完成此操作,就可以发现标签助手了

public static IHtmlContent GravatarImage(this IHtmlHelper htmlHelper, string emailAddress, GravatarOptions options = null)