如何将动态数据注入Web应用程序manifest.json文件?

时间:2017-09-28 02:36:52

标签: asp.net-mvc asp.net-mvc-5 progressive-web-apps manifest.json

.NET MVC 5

我需要将动态文本添加到用于Web应用程序的{ "background_color": "black", .... "start_url": "/ABCDEFG” } 文件中的start_url,甚至可能是动态启动画面(但我会对start_url感到满意)。 start_url需要包含一个种子,它将基本上创建一个“深度”start_url,最终导致类似:

manifest.json

其中“ABCDEFG”是动态文本,对于不同的客户端将是不同的。 " ABCDEFG"当然,它将在服务器端提供。这将消除对单独的SELECT Customers.customerName AS customer_name, Orders.shippedDate AS ship_date, Orders.orderDate AS order_date, DATEDIFF( Orders.shippedDate, Orders.orderDate ) AS days_late FROM Customers JOIN Orders ON Customers.customerNumber = Orders.customerNumber WHERE DATEDIFF( Orders.shippedDate, Orders.orderDate ) > 10 文件的需求,这将是一场噩梦。

我不知道是否有办法将动态数据“流式化”到链接中,或者我可能想出一种方法来动态创建“temp”,就像manifest.json.ABCDEFG一样,但这似乎很笨重而且我认为可能会有更优雅和更清洁的方式。对不起,如果我听起来有点模糊,或者我缺乏正确的术语。

我查看了" How can I use php to populate a manifest.json file?"这几乎是我需要做的事情,但我不知道如何在.NET中做到这一点。

即使是一些指导我解决方案的链接也会非常感激。我在谷歌上出现了其他空洞。

1 个答案:

答案 0 :(得分:1)

我有一个类似的问题。我通过简单地将json文件作为字符串读取并替换了一些占位符来解决了该问题。

这是我的控制器(带有虚假的变量名):

[AllowAnonymous]
public class PublicController : Controller
{
  public ActionResult SiteManifest()
  {
    var rawJsonText = System.IO.File.ReadAllText(Path.Combine([MySourceFolder], "rawManifest.json"));
    rawJsonText = rawJsonText.Replace("@url@", [MyRootUrl]);
    rawJsonText = rawJsonText.Replace("@icon@", [MyIconName]);
    return Content(rawJsonText, "application/json");
  }
}

和我编辑过的rawManifest.json文件(可以保存在服务器上的任何位置):

{
  "name": "x",
  "short_name": "x",
  "description": "x",
  "start_url": "@startUrl@",
  "scope": "@startUrl@",
  "display": "standalone",
  "orientation": "landscape-primary",
  "background_color": "x",
  "theme_color": "x",
  "icons": [
    {
      "src": "../images/@icon@144.png",
      "sizes": "144x144",
      "type": "image/png"
    },
    {
      "src": "../images/@icon@192.png",
      "sizes": "192x192",
      "type": "image/png"
    }
  ]
}

我必须确保该操作可由匿名用户调用,并且效果很好。