检索、显示和缓存数据库中的字符串
本文关键字:字符串 数据库 缓存 显示 检索 | 更新日期: 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]属性