.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中做到这一点。
即使是一些指导我解决方案的链接也会非常感激。我在谷歌上出现了其他空洞。
答案 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" } ] }
我必须确保该操作可由匿名用户调用,并且效果很好。