У меня есть веб-формы c # приложение.Есть фигура SVG, которая имеет различные части.Каждая часть соответствует объекту
public class Room
{
public string uuid { get; set; }
public string name { get; set; }
}
Я асинхронно вызываю сервис для потоковой передачи данных в приложение, это работает само по себе.Основываясь на каждой точке данных, которую я получаю, мне нужно покрасить часть svg в определенный цвет.
При первоначальном просмотре страницы svg должен отображаться белым цветом, а затем с помощью обратной передачи (кнопка).необходимо начать потоковую передачу с использованием асинхронного метода.
Код кнопки:
protected async void Button1_Click(object sender, EventArgs e)
{
foreach (Room room in rooms)
{
await Colour(room);
}
}
Функция цвета:
//... initialisation of the call
var response = httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result;
var stream = response.Content.ReadAsStreamAsync().Result;
using (var reader = new StreamReader(stream))
{
while (!reader.EndOfStream)
{
var currentLine = reader.ReadLine();
if (currentLine.Length > 0)
{
JObject json = JObject.Parse(currentLine);
HtmlGenericControl control = (HtmlGenericControl)FindControl(room.name);
control.Attributes["style"] = "fill: rgb(0, 255, 0);stroke-width:3;stroke:rgb(0,0,0)";
UpdatePanel1.Update(); //This doesn't do anything
}
}}
Разметка (прямоугольный идентификатор соответствует room.name):
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<div>
<svg id="svgFloor1" runat="server">
<rect runat="server" id="e206061" style="fill:rgb(255, 255, 255);stroke-width:3;stroke:rgb(0,0,0)" />
<rect runat="server" id="e20604b1" style="fill:rgb(255, 255, 255);stroke-width:3;stroke:rgb(0,0,0)" />
</div>
</ContentTemplate>
</asp:UpdatePanel>