2013-05-28 4 views
0

У меня есть @model IEnumerable<HotelWithRating> - некоторые отели. У меня есть 5 флажков - звезд отеля.Смешивание javascript и C#

<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 с кодом, но до сих пор не в решение.

+1

Ну, вы не можете сделать это так жаль - вы излучаете HTML в блок JavaScript. Если вы хотите динамически изменять набор отелей, видимых во время работы, вам также нужно будет написать все отели на странице, возможно, используя стиль «display: none», чтобы скрыть исходный набор, который вы не хотите отображать , а затем контролировать видимость строк таблицы из JavaScript - или вы можете создать пустую таблицу, а затем загрузить набор требуемых данных и любые дополнительные строки, которые вам нужны по мере необходимости, через AJAX. – Rup

+0

Спасибо U. Теперь я не могу установить стиль. Я делаю так: row = document.getElementsByClassName (id + "stars"); for (var i = 0; i Stalli

+0

Я думаю, что фильтрация данных на сервере лучше. – Xordal

ответ

0

Лучше сначала фильтровать модель на основе выбора флажка. Это можно сделать на стороне клиента, сравнивая свойства каждого отеля в модели. В противном случае вы также можете выполнять фильтрацию на стороне сервера, используя AJAX (отправка информации выбранного флажка, а затем сервер отправит вам отфильтрованную модель). Фильтрация на стороне сервера лучше - у вас есть огромный список отелей, которые нужно изучить.

Затем назначьте эту фильтрованную модель Grid или сгенерируйте таблицу, используя цикл for для каждого элемента в отфильтрованной модели с использованием JavaScript.

Не стесняйтесь спрашивать какой-либо другой вопрос, если вы получите. Благодарю.

Смежные вопросы