【问题标题】:Generate Page Title and Meta Tags from database using URL path使用 URL 路径从数据库生成页面标题和元标记
【发布时间】:2022-01-20 15:26:30
【问题描述】:

我想通过从数据库中获取名称来动态更改标题标签。此内部数据库已在同一个表中包含名称和 ID,但我遇到了问题。

我想做的是从 Url Path 中获取 QRLinkCode,然后返回与该 QRLinkCode 关联的名称以填充视图源中的标题元标记。

这是我到目前为止写的。

     public class PageMetaDetails
            {
                public static string UpdateMetaDetails (string urlpath)
                {
                    //--- StringBuilder object to store MetaTags information.
                    StringBuilder sbMetaTags = new StringBuilder();
        
                    //--Step1 Get data from database.
        
                    using (TemplateDBEntities db = new TemplateDBEntities())
                    {
                       
                        var qrLinkName = "";
                        
                        
                         if (urlpath.StartsWith("/ItemList"))
                        {
                            //get qrLink code out of the url
                            var qrLinkId = urlpath.Substring(urlpath.Length - 6);
        
        
                            //hit the database for this qr link by id
                            var qrLink = db.QRLinks.FirstOrDefault(x => x.QRLinkCode == qrLinkId);
                            qrLinkName = qrLink.Name;
                            
                            
        
                        }
                        
        
                        //---- Step2 In this step we will add <title> tag to our StringBuilder Object.
                        //sbMetaTags.Append(qrLinkName);
                        //sbMetaTags.Append(Environment.NewLine);
        
                        
                        return qrLinkName;
                    }
        
                    
                }
                
               
            } 

在这之间会有代码,这就是为什么它不存在 是额外的{},但我只想先让这部分工作。

我在 Layout.cshtml 下面也有这个,用于将名称路由到标题元标记。

<title>
        @{string title = Url.RequestContext.RouteData.Values["controller"] + "/" + Url.RequestContext.RouteData.Values["action"];
            @(Html.Raw(Models.PageMetaDetails.UpdateMetaDetails(title)));} </title>

由于某种原因,它没有返回与 ID 关联的名称。如果有人有任何想法,请告诉我哪里出错了。

【问题讨论】:

  • 你试过一步步调试吗?有错误提示吗?
  • 我已经尝试了逐步调试并且没有收到任何错误消息。这就是我如此困惑的原因。
  • 我有点想知道剃刀页面是否编码错误,或者我是否没有正确路由到 url 路径。

标签: c# asp.net visual-studio model-view-controller


【解决方案1】:

好吧,显然 url 路径字符串有问题,所以我更正了我的输入。


                if (HttpContext.Current.Request.Url.AbsolutePath.StartsWith("/ItemList"))
                {
                    //get qrLink code out of the url
                    //var qrLinkId = urlpath.Substring(urlpath.Length - 6);
                    
                    var qrLinkId = HttpContext.Current.Request.Url.AbsolutePath.Substring(HttpContext.Current.Request.Url.AbsolutePath.Length - 6);
                   

                    //hit the database for this qr link by id
                    var qrLink = db.QRLinks.FirstOrDefault(x => x.QRLinkCode == qrLinkId);
                    qrLinkName = qrLink.Name;
                    // var orgId = qrLink.FKId;

                    

                }


它允许在 url 子字符串中返回与 QR 码关联的标题。

【讨论】:

  • 您的原始代码出了什么问题?
  • 我猜是 URL 子字符串请求不正确。
  • 嗨 Renarldo Mason,很高兴知道您找到了解决此问题的解决方案!请考虑接受它作为答案以将其状态更改为已回答。它还将帮助其他人解决类似的问题。见can I answer my own question..,只是一个提醒:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2011-02-28
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多