Ich habe eine Erweiterungsmethode erstellt und den Namespace in meine web.config
Datei aufgenommen. Die Erweiterungsmethode funktioniert einwandfrei und ist vom Testcode OK. Das Problem ist, ich bekomme immer noch einen Fehler in Bezug auf den Namespace nicht gefunden.MVC 4 und Erweiterungsmethoden mit Razor
Die ASP .NET Fehlermeldung Ich erhalte ist:
CS1061: ‚System.Uri‘ enthält keine Definition für ‚IsCurrentUrl‘ und keine Erweiterungsmethode ‚IsCurrentUrl‘ ein erstes Argument vom Typ akzeptieren 'System.Uri' könnte gefunden werden (fehlt eine Verwendungsrichtlinie oder eine Baugruppenreferenz?)
Unten ist der entsprechende Code.
Web.config:
<system.web>
<httpRuntime targetFramework="4.5" />
<compilation debug="true" targetFramework="4.5" />
<pages>
<namespaces>
<add namespace="System.Web" />
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
<add namespace="MyMainSite2.Library.Extensions" />
</namespaces>
</pages>
</system.web>
Erweiterung Methodencode:
namespace MyMainSite2.Library.Extensions
{
public static class UriExtensions
{
#region Public Static Methods
public static bool IsCurrentUrl(this Uri uri, string url)
{
if (String.IsNullOrWhiteSpace(url))
return false;
url = url.Trim().ToLower();
string absolutePath = uri.AbsolutePath.Trim().ToLower();
if (!url.StartsWith("/") && absolutePath.StartsWith("/"))
absolutePath = absolutePath.Remove(0, 1);
bool match = absolutePath == url;
return match;
}
#endregion
}
}
Razor Code:
@model MyMainSite2.UI.Web.Models.Shared.TopMenuModel
@foreach (var item in this.Model.Items)
{
if(this.Request.Url.IsCurrentUrl(item.Url)) // this line is failing because UriExtensions.IsCurrentUrl is not being found
{
@:<li class="current">
}
else
{
@:<li>
}
@:<a href="@item.Url">@item.Text</a></li>
}
Haben Sie die richtige using-Anweisung in der View-Datei? – dtsg
Nein. Ich setze den Namespace in die Datei web.config, so dass ich das nicht für jede Ansichtsdatei machen muss. – rhughes
Haben Sie versucht, es in 'MyMainSite2.Library.Extensions.UriExtensions' zu ändern? – dtsg