【问题标题】:How to update multiple div contents using C#?如何使用 C# 更新多个 div 内容?
【发布时间】:2018-08-22 12:53:06
【问题描述】:

在从 API 获取响应时,我需要相应地更新 div。 下面是我的 HTML 代码

<div class="col-md-2 mb-4">
    <div class="card mb-4" id="roomName_1" runat="server">
        <div class="card-header text-center">
            Room 1
        </div>
        <div class="card-body" style="background-color:#ff0000;color:white;">
            <p>
                <asp:Literal Text="Organizer" runat="server" ID="organiser_1" />
                <br />
                <label id="from_1">From</label>
                -
                <label id="to_1">To</label>
                <br />
                <asp:Literal Text="Subject" runat="server" ID="subject_1" />
            </p>
        </div>
    </div>
</div>

有 24 个这样的房间,对于每个房间,我必须更新我从 GET 请求中获得的 Organizer、From、To、Subject

private void GetRoom(string uri) {
    var request = WebRequest.Create(uri);
    string text;
    var response = (HttpWebResponse)request.GetResponse();
    request.ContentType = "application/json; charset=utf-8";
    using(var sr = new StreamReader(response.GetResponseStream())) {
        text = sr.ReadToEnd();
        List<RoomConfigurationViewInfo> roomObject = JsonConvert.DeserializeObject < List<RoomConfigurationViewInfo>> (text);
        foreach(var value in roomObject) {
            Response.Write(value.Organizer);
            Response.Write(value.Subject);
        }

    }
}

那么,是否可以使用 C# 更新多个 Div? &如果不是那么我怎么能做到这一点。

请提出建议。

【问题讨论】:

  • 你不能。您需要在客户端使用 AJAX(此处链接 api.jquery.com/jquery.get)。此外,您在控制器中的方法不能为 void,因为您需要将数据传递给视图。

标签: c# html asp.net webforms


【解决方案1】:

我找到了一种可以实现此目的的方法:

首先,将 ID 添加到您的第一个标签:&lt;div id="rooms" runat="server" class="col-md-2 mb-4"&gt;

现在在后面的代码中,你可以试试这个:

private void GetRoom(string uri) 
{
  var request = WebRequest.Create(uri);
  string text;
  var response = (HttpWebResponse)request.GetResponse();
  request.ContentType = "application/json; charset=utf-8";
  using(var sr = new StreamReader(response.GetResponseStream()))
  {
    text = sr.ReadToEnd();
    List<RoomConfigurationViewInfo> roomObject = JsonConvert.DeserializeObject < List<RoomConfigurationViewInfo>> (text);

    rooms.InnerHtml = "";

    for(int i = 0; i < roomObject.Count; i++) 
    {
        string strOrganizer = roomObject[i].Organizer;
        string strSubject = roomObject[i].Subject;
        string strFrom = roomObject[i].From;
        string strTo = roomObject[i].To;

        rooms.InnerHtml += "<div class=\"card mb-4\">"
                         + "<div class=\"card-header text-center\">"
                         + "Room " + i + "";
                         + "</div>"
                         + "<div class=\"card-body\" style=\"background-color:#ff0000;color:white;\">"
                         + "<p>"
                         + "<asp:Literal Text=\"" + strOrganizer "\" runat=\"server\" ID=\"organiser_" + i + "\"/>"
                         + "<br />"
                         + "<label>" + strFrom + "</label>"
                         + "-"
                         + "<label>" + strTo + "</label>"
                         + "<br />"
                         + "<asp:Literal Text=\"" + strSubject + "\" runat=\"server\" ID=\"subject_" + i + "\" />"
                         + "</p>"
                         + "</div>"
                         + "</div>";
    }
  }
}

希望对你有帮助

【讨论】:

    【解决方案2】:

    这取决于您是否动态执行此操作。如果您只是加载页面并更新 div,请将其作为变量传递,然后对其进行迭代。

    您页面上的代码将是这样的:

    <% foreach (var myItem in g) { %>
      <p>
          <%= myItem.Organizer%>
          <br />
          <label id="from_1">From</label>
          -
          <label id="to_1">To</label>
          <br />
          <%= myItem.Subject%>
      </p>
    <% } %>
    

    如果您尝试动态执行此操作,则上面的评论者是正确的,您必须通过 jQuery/Javascript 执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多