0

我有@model IEnumerable<HotelWithRating>- 一些酒店。在视图中,我有 5 个复选框 - 酒店的星级。

<table>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
        <td>5</td>
    </tr>
    <tr>
        <td><input type = 'checkbox' value="false" id= '1' onclick = ' ShowHotels();'/></td>
        <td><input type = 'checkbox' value="false" id= '2' onclick = ' ShowHotels();'/></td>
        <td><input type = 'checkbox' value="false" id= '3' onclick = ' ShowHotels();'/></td>
        <td><input type = 'checkbox' value="false" id= '4' onclick = ' ShowHotels();'/></td>
        <td><input type = 'checkbox' value="false" id= '5' onclick = ' ShowHotels();'/></td>
    </tr>
</table>

我需要显示具有例如 5 星或 4 星的酒店(如果选中了第四和第五个复选框)。

它应该是这样的

<table class="Grid"> 
    <tr> 
        <th>Name</th>
        <th>Stars</th>       
        <th>Rating</th>
        <th>Description</th>             
    </tr> 
    <script type="text/javascript">
        function ShowHotels() 
        {
              @foreach (var item in Model)
                  {
                      <text>
                      if (document.getElementById(item.Hotel.stars).checked == true)
                      {
                          <tr>
                          <td>@item.Hotel.Name</td>
                          <td>@item.Hotel.Stars</td>
                          <td>@item.Rating</td>
                          <td>@item.Hotel.Description</td>
                          </tr>
                      }
                      </text>
                  }
        }
    </script>
</table>

我发现了很多关于将 javascript 与代码混合的话题,但仍然没有决定。

4

1 回答 1

0

最好先根据复选框选择过滤模型。它可以在客户端通过比较模型中每个酒店的属性来完成。否则,您也可以使用 AJAX 进行服务器端过滤(发送所选复选框的信息,然后服务器将向您发送过滤后的模型)。服务器端过滤更好,因为您有大量的酒店要查看。

然后将此过滤模型分配给 Grid 或使用 for 循环为过滤模型中的每个元素使用 JavaScript 生成表。

如果您有任何进一步的问题,请随时提出。谢谢。

于 2013-07-02T07:49:42.793 回答