سلام دوستان
من از اموزش این لینک برای ساخت سایت مپ استفاده کردم.اما برنامه ارور داره ممنون میشم راهنمایی بفرمایید.
لینک مقالهhttps://barnamenevisan.org/Articles/Article5687.html
ارور:
Error 1 Extension method must be defined in a non-generic static class
متن ارور به Extension mehtod اشاره میکنه که استفاده کردید
من مقاله را دیدم در اون از extension استفاده نشده بود
ببخشید کجای کار من اشتباه هست متوجه نمیشم؟ممنون میشم بگید.
من یه فولدر ساختم بنام sitemap که در اون سه تا کلاس ساختم بنامهای :
sitemapfrequency.cs
sitemapnode.cs
UrlHelperExtensions.cs
بعد در کنترلر home کدهای زیر را قرار دادم:
[Route("sitemap.xml")] public ActionResult SitemapXml() { var sitemapNodes = GetSitemapNodes(this.Url); string xml = GetSitemapDocument(sitemapNodes); return this.Content(xml, ContentType.Xml, Encoding.UTF8); } public string GetSitemapDocument(IEnumerable<SitemapNode> sitemapNodes) { XNamespace xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9"; XElement root = new XElement(xmlns + "urlset"); foreach (SitemapNode sitemapNode in sitemapNodes) { XElement urlElement = new XElement( xmlns + "url", new XElement(xmlns + "loc", Uri.EscapeUriString(sitemapNode.Url)), sitemapNode.LastModified == null ? null : new XElement( xmlns + "lastmod", sitemapNode.LastModified.Value.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:sszzz")), sitemapNode.Frequency == null ? null : new XElement( xmlns + "changefreq", sitemapNode.Frequency.Value.ToString().ToLowerInvariant()), sitemapNode.Priority == null ? null : new XElement( xmlns + "priority", sitemapNode.Priority.Value.ToString("F1", CultureInfo.InvariantCulture))); root.Add(urlElement); } XDocument document = new XDocument(root); return document.ToString(); } public IReadOnlyCollection<SitemapNode> GetSitemapNodes(UrlHelper urlHelper) { List<SitemapNode> nodes = new List<SitemapNode>(); nodes.Add( new SitemapNode() { Url = urlHelper.AbsoluteRouteUrl("HomeGetIndex"), Priority = 1 }); nodes.Add( new SitemapNode() { Url = urlHelper.AbsoluteRouteUrl("HomeGetAbout"), Priority = 0.9 }); nodes.Add( new SitemapNode() { Url = urlHelper.AbsoluteRouteUrl("HomeGetContact"), Priority = 0.9 }); foreach (int productId in productRepository.GetProductIds()) { nodes.Add( new SitemapNode() { Url = urlHelper.AbsoluteRouteUrl("ProductGetProduct", new { id = productId }), Frequency = SitemapFrequency.Weekly, Priority = 0.8 }); } return nodes; }
کد را Trace کنید ببینید در کدام خط این ارور رو میده
در کلاس UrlHelperExtensions:
به خط public class UrlHelperExtensions
این کلاس رو خودتون ساختید ؟
در نمونه نبود
در قسمت ایجاد مجموعه ای از SiteMapNode :
public IReadOnlyCollection<SitemapNode> GetSitemapNodes(UrlHelper urlHelper) { List<SitemapNode> nodes = new List<SitemapNode>(); nodes.Add( new SitemapNode() { Url = urlHelper.AbsoluteRouteUrl("HomeGetIndex"), Priority = 1 }); nodes.Add( new SitemapNode() { Url = urlHelper.AbsoluteRouteUrl("HomeGetAbout"), Priority = 0.9 }); nodes.Add( new SitemapNode() { Url = urlHelper.AbsoluteRouteUrl("HomeGetContact"), Priority = 0.9 }); foreach (int productId in productRepository.GetProductIds()) { nodes.Add( new SitemapNode() { Url = urlHelper.AbsoluteRouteUrl("ProductGetProduct", new { id = productId }), Frequency = SitemapFrequency.Weekly, Priority = 0.8 }); } return nodes; } public class UrlHelperExtensions { public static string AbsoluteRouteUrl( this UrlHelper urlHelper, string routeName, object routeValues = null) { string scheme = urlHelper.RequestContext.HttpContext.Request.Url.Scheme; return urlHelper.RouteUrl(routeName, routeValues, scheme); } }
من تصور کردم که getsitemapnode رو باید در کنترلر قرار بدم و برای UrlHelperExtensions یک کلاس در فولدر sitemap بسازم.که ظاهرا اشتباه بوده.ممنون میشم توضیح بدین باید چیکار کنم؟
کلاس public
class
UrlHelperExtensions را به شکل زیر تغییر دهید
public static class UrlHelperExtensions { public static string AbsoluteRouteUrl( this UrlHelper urlHelper, string routeName, object routeValues = null) { string scheme = urlHelper.RequestContext.HttpContext.Request.Url.Scheme; return urlHelper.RouteUrl(routeName, routeValues, scheme); } }
ممنون
الان ارور زیر رو دارم.کل پکیجها رو اپدیت کردم اما همین پکیج نمیتونه اپدیت بشه و ارور میده؟
Error 1 The type or namespace name 'RoutePrefixAttribute' could not be found (are you missing a using directive or an assembly reference?)
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)