检索、显示和缓存数据库中的字符串

本文关键字:字符串 数据库 缓存 显示 检索 | 更新日期: 2023-09-27 18:04:40

我目前正在开发一个网站,允许用户自定义它的各个方面。

我已经能够上传,检索和缓存自定义css规则,也图像,但字符串逃避我。我正在使用ASP.net MVC5.

这是我到目前为止的代码:

FileController:

[HttpGet]
[OutputCache(Duration = 3600, Location = OutputCacheLocation.Server)]
public ContentResult getString()
{
   string randString = getStringFromDatabase(); //retrieves hard coded string for now
   if (randString != null && randString.Length > 0)
      return Content(randString);
   else
      return null;
}

然后使用这个控制器,我计划使用@Url。操作调用FileController中的上述方法并检索字符串。我以前已经能够检索图像(因为你把url动作在img标签的src属性),也加载自定义CSS文件(因为你把url动作在链接标签的src属性),这两个都是可缓存的类似于上面的代码。

我用这样的图片来实现这一点:

<img class="navbar-logo" src="@Url.Action( "image", "file", new { name = "Logo.png" })" />

并希望对字符串执行此操作。

我确实尝试使用jQuery $。函数,但它不缓存字符串,并在每次页面加载后加载字符串。

如果它有帮助,我试图在数据库中保存自定义页面标题,然后在第一次加载时检索它,并缓存它。

TL;DR:我有一个字符串存储在数据库中。我想检索这个字符串通过一个剃刀动作(Url。操作或其他),并将其显示给网页的用户。我还想缓存它。我可以用图像和css文件,因为<img><link>标签都有src属性,但<p>/<span>和其他文本元素没有。

如果你需要更多的信息,请告诉我!

检索、显示和缓存数据库中的字符串

所以我通过DaveParsons提供的链接找到了答案(请参阅我最初问题下的评论)

实际上,我不需要使用@Url。行动,答案是@Html。行动:

<h4 id="page-title">@Html.Action("GetTitle", "file", new { type = "pagetitle" })</h4>

但这是返回一个错误,说你不能设置输出缓存位置与子操作,因为它只支持属性'Duration, VaryByCustom和VaryByParam'。我尝试了它没有位置,但试图然后刷新缓存不起作用,所以我完全删除了属性,它现在缓存标题,也被删除更新它。

所以我必须在控制器中创建一个新的代码块:
    [HttpGet]
    public ContentResult GetTitle(string type)
    {
        string titleString = getStringFromByte(this.DataProvider.CustomizationFileManager.LoadCustomizationFile("WebsitePageTitle.txt"));
        if (titleString != null && titleString.Length > 0)
            return Content(titleString);
        else
            return Content("");
    }

我的回答似乎有点复杂(还没喝咖啡)。所以我会提供一个。

DR:使用@Html.Action。从控制器方法中移除[OutputCache]属性