ich war nie in der Lage zu bekommen Htmlhelper Erweiterungsmethoden zu arbeiten, erhielt ich immer:
‚IHtmlHelper‘ enthält keine Definition enthalten für ‚Method‘ und keine Erweiterungsmethode ‚Method‘ ein erstes Argument vom Typ ‚IHtmlHelper‘ akzeptieren konnte gefunden werden (möglicherweise fehlt eine using-Direktive oder eine Baugruppe Referenz?)
Auch wenn ich den richtigen Namespace in meiner _ViewImports.cshtml Datei hatte. Also entschied ich mich, die Fähigkeit von Razor-Seiten zu nutzen, um nun Dienste zu injizieren, die für die Abhängigkeitsinjektion registriert wurden. Als ein Beispiel habe ich die Notwendigkeit, einige Werte aus meiner Konfigurationsdatei in meine _Layout.cshtml Datei zu injizieren. Also habe ich folgende:
1) definiert, um eine IConfigurationHelperService Schnittstelle:
public interface IConfigurationHelperService
{
string GetApiUrl();
}
2) definiert eine Implementierung dieser Schnittstelle in einer ConfigurationHelperSerivce Klasse (die selbst Dependency Injection wird mit der regulären Konfiguration zu erhalten Klasse):
public class ConfigurationHelperService : IConfigurationHelperService
{
public ConfigurationHelperService(IConfiguration configuration)
{
Configuration = configuration;
}
private IConfiguration Configuration { get; }
public string GetApiUrl()
{
return GetConfigurationValue(ApiUrl);
}
private string GetConfigurationValue(string key)
{
var value = Configuration[key];
if (value.IsNullOrEmpty()) throw new KeyNotFoundException($"Configruation does not contain an instance of {key}");
return value;
}
}
3) Registrierte den Dienst für die Injektion über ConfigureServices in Startup.cs:
4) Der richtige Namespace als Verwendungsanweisung in meine _ViewImports.cshtml Datei hinzugefügt.
5) verwendet, um das @inject Stichwort es in der _Layout.cshtml Datei verwenden zu definieren.
@inject IConfigurationHelperService ConfigHelper
<!DOCTYPE html>
<html>
...
@ConfigHelper.GetApiUrl()
...
</html>
Es funktionierte gut für mich, und ich kann viel mehr Einsatzmöglichkeiten für diese auf einfachere Seiten, auf denen die Definition Modelle zu viel Arbeit wäre sehen.
Habe diese Unterscheidung in meinem Fehler nicht bemerkt, hätte die Schnittstelle ausprobiert. Vielen Dank! –